之前想做个倒计时的效果,本想着挺容易的,没想到做起来还是有一些难度的,最后还是借助网络资源实现了这个效果。
我原想的是flex中有一个setTimeout()函数,此函数意思是在指定的延迟(以毫秒为单位)后运行指定的函数,即
public function setTimeout(closure:
Function, delay:
Number,
... arguments):
uint
但是如果做成倒计时时,只减少一个数,不知道是不是因为flex运行一帧的缘故。无奈,只好作罢。通过改造网上的一个倒计时钟的资源实现了倒计时的效果,在此表示感谢。新建一个mxml文件,且看原文件的如下部分所示代码:
<?xml version="1.0"encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" preloader="ases.util.LoadingProgressBarUtil" width="100%" height="100%"creationComplete="app_creationCompleteHandler(event)"> <fx:Style source="css/activateEmail.css" /> <fx:Script> <![CDATA[ public var timer:Timer; [Bindable]public var str:String; protected function app_creationCompleteHandler(event:FlexEvent):void { timer=new Timer(1000); //设置间隔时间为1s timer.addEventListener(TimerEvent.TIMER, timehandle) } //调用倒计时方法 private function startTimer():void { timer.start(); } //停止倒计时方法 private function stopTimer():void { timer.stop(); } // private function timeTransform(stattime:int, counter:int):String { var str:String=""; var count:int=stattime - counter; var second:int=count % 60; str=(second + "")+"s后返回主页..."; if (second == 0) { isStop=true; //可在此处添加倒计时末期的处理方法。 str="请稍候,正在跳转中..." var url:URLRequest=new URLRequest("http://localhost:9080/mydisk/swf/login.html"); navigateToURL(url,"_self"); } else { isStop=false; } return str; } private function timehandle(e:TimerEvent):void { var count:int=timer.currentCount; str=timeTransform(6, count); if (isStop) { stopTimer(); } } <s:Labelid="back" text="{str}"/> </s:Application>
上面贴出了实现倒计时的代码,可以看出实现这个效果是首先实例化一个Timer对象,然后通过监听Timer来实现效果。当我们需要显示此倒计时时调用startTimer()方法,反之调用stopTimer()方法即可。部分注释详见代码。
效果如下所示:
这是本人学习的结果,允许转载,欢迎交流,但转载务必给出本文章的链接地址:http://blog.csdn.net/youqishini/article/details/7882347,谢谢~