ActionScript 3.0中,提供一个Timer类。通过这个类可以定时的调用其他的方法或者函数。这样可以控制循环的定时调用。创建Timer类实例的方法如下代码所示。
var flexTimer:Timer=new Timer(500,10); //声明500毫秒调用一次,共调用10次
Timer的构造函数有两个整型参数。第一个参数代表调用的时间间隔以毫秒为单位。另外一个参数为调用的次数。开始Timer的调用使用start方法。同时需要添加一个时间监听,使得每次到达规定的时间间隔可以调用相应的函数。也可以添加一个完成调用的监听,当内容调用全部结束的时候,可以调用特定的函数。下面构建一个Timer类的应用,步骤如下。
(1)创建一个Flex项目,命名为“TimerStu”。创建一个FlexStuTimer的类。打开FlexStuTimer.as文件,修改代码如下。
package
{
//引入包
import flash.events.TimerEvent;
import flash.utils.Timer;
public class FlexStuTimer
{
public function FlexStuTimer()
{
//创建一个500毫秒间隔,10次的Timer
var curTimer:Timer = new Timer(500, 10);
//添加一个事件监听器,使得每次到达时间间隔调用output方法
curTimer.addEventListener(TimerEvent.TIMER, outPut);
//添加一个事件监听使得完成所有Timer调用后,调用函数timerComplete
curTimer.addEventListener(TimerEvent.TIMER_COMPLETE,timerComplete);
//开始时间间隔的调用
curTimer.start();
}
public function outPut(evt:TimerEvent):void
{
//每次输出调用的次数
trace("输出次数 " + evt.target.currentCount);
}
public function timerComplete(evt:TimerEvent):void
{
//调用完毕输出内容
trace("调用完毕");
}
}
}
在这个例子中,定义了一个outPut的方法。同时定义一个事件监听器,监听时间间隔并调用outPut方法。定义一个timerComplete的方法。同时定义一个事件监听器,监听调用完成并调用timerComplete方法。
(2)打开TimerStu.xml文件,修改代码如下所示。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
var showTimerstu:FlexStuTimer=new FlexStuTimer();
]]>
</mx:Script>
</mx:Application>
这里只是定义了一个FlexStuTimer实例。在FlexStuTimer类的构造函数中,完成对Timer的调用。
(3)保存并调试TimerStu项目,为了能看到控制台的输出必须调试项目。输出内容如下。
输出次数 1
输出次数 2
输出次数 3
输出次数 4
输出次数 5
输出次数 6
输出次数 7
输出次数 8
输出次数 9
输出次数 10
调用完毕
在调试时,每500毫秒输出一次内容,最后输出“调用完毕”。