之前想做个倒计时的效果,本想着挺容易的,没想到做起来还是有一些难度的,最后还是借助网络资源实现了这个效果。 我原想的是flex中有一个setTimeout()函数,此函数意思是在指定的
之前想做个倒计时的效果,本想着挺容易的,没想到做起来还是有一些难度的,最后还是借助网络资源实现了这个效果。
我原想的是flex中有一个setTimeout()函数,此函数意思是在指定的延迟(以毫秒为单位)后运行指定的函数,即
public function setTimeout(closure:Function, delay:Number,... arguments):uint
原文件的如下部分所示代码:
<?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()方法即可。部分注释详见代码。
效果如下所示: