flash.utils
public class Timer
继承Timer Inheritance EventDispatcher Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

Timer 类是计时器的接口,它使您能按指定的时间序列运行代码。使用 start() 方法来启动计时器。为 timer 事件添加事件侦听器,以便将代码设置为按计时器间隔运行。

可以创建 Timer 对象以运行一次或按指定间隔重复运行,从而按计划执行代码。根据 SWF 文件的帧速率或 Flash Player 的环境(可用内存及其他因素),Flash Player 或 Adobe AIR 调度事件的间隔可能稍有不同。例如,如果某个 SWF 文件设置为以每秒 10 帧 (fps)(也就是 100 毫秒的间隔)的速度播放,但计时器设置为在 80 毫秒时触发事件,则将按接近于 100 毫秒的间隔触发事件。 根据应用程序的内部帧速率,应用程序调度事件的间隔可能稍有不同。大量耗费内存的脚本也可能使事件发生偏差。

查看示例

另请参见

Working with dates and times
Controlling time intervals


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  currentCount : int
[只读 (read-only)] 计时器从 0 开始后触发的总次数。
Timer
  delay : Number
计时器事件间的延迟(以毫秒为单位)。
Timer
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  repeatCount : int
设置的计时器运行总次数。
Timer
  running : Boolean
[只读 (read-only)] 计时器的当前状态;如果计时器正在运行,则为 true,否则为 false。
Timer
公共方法
 方法定义方
  
Timer(delay:Number, repeatCount:int = 0)
使用指定的 delay 和 repeatCount 状态构造新的 Timer 对象。
Timer
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
  
如果计时器正在运行,则停止计时器,并将 currentCount 属性设回为 0,这类似于秒表的重置按钮。
Timer
 Inherited
设置循环操作动态属性的可用性。
Object
  
如果计时器尚未运行,则启动计时器。
Timer
  
停止计时器。
Timer
 Inherited
返回指定对象的字符串表示形式。
Object
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  每当 Timer 对象达到根据 Timer.delay 属性指定的间隔时调度。Timer
  每当它完成 Timer.repeatCount 设置的请求数后调度。Timer
属性详细信息
currentCount属性
currentCount:int  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

计时器从 0 开始后触发的总次数。如果已重置了计时器,则只会计入重置后的触发次数。



实现
    public function get currentCount():int
delay属性 
delay:Number  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

计时器事件间的延迟(以毫秒为单位)。如果在计时器正在运行时设置延迟间隔,则计时器将按相同的 repeatCount 迭代重新启动。



实现
    public function get delay():Number
    public function set delay(value:Number):void

引发
Error — 如果指定的延迟为负数或不是有限数,则将引发异常。
repeatCount属性 
repeatCount:int  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

设置的计时器运行总次数。如果重复计数设置为 0,则计时器将持续不断运行,直至调用了 stop() 方法或程序停止。如果重复计数不为 0,则将运行计时器,运行次数为指定的次数。如果设置的 repeatCount 总数等于或小于 currentCount,则计时器将停止并且不会再次触发。



实现
    public function get repeatCount():int
    public function set repeatCount(value:int):void
running属性 
running:Boolean  [只读 (read-only)]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

计时器的当前状态;如果计时器正在运行,则为 true,否则为 false



实现
    public function get running():Boolean
构造函数详细信息
Timer()构造函数
public function Timer(delay:Number, repeatCount:int = 0)

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

使用指定的 delayrepeatCount 状态构造新的 Timer 对象。

计时器不会自动启动;必须调用 start() 方法来启动它。

参数
delay:Number — 计时器事件间的延迟(以毫秒为单位)。
 
repeatCount:int (default = 0) — 指定重复次数。如果为 0,则计时器重复无限次数。如果不为 0,则将运行计时器,运行次数为指定的次数,然后停止。

引发
Error — 如果指定的延迟为负数或不是有限数

示例

在下面的示例中,为用户提供了 90 秒的时间将响应写入到输入文本字段中。此外,每隔 30 秒显示一个状态消息,可让用户了解还剩下多少秒。

创建了一个 Timer 对象,它在 30 秒内启动(将延迟设置为 30000 毫秒),并在总共 90 秒的时间内重复启动 3 次。(计时器将在第 3 次后停止。)

myTimer 计时器添加了两个事件侦听器。第一个事件侦听器是由 TimerEvent.TIMER 事件触发的,每次启动计时器时都会发生此事件。timerHandler() 方法将更改 statusTextField 文本字段的文本以反映所剩的秒数。

注意:Timer 类通过增大 currentCount 属性中的数字来跟踪计时器需要启动的次数 (repeats)。

在最后一次调用计时器后,将调度 TimerEvent.TIMER_COMPLETE 事件并调用 completeHandler() 方法。completeHandler() 方法将 inputTextField 文本字段的类型从 INPUT 更改为 DYNAMIC,这意味着用户不再可以输入或更改文本。

package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.text.TextFieldAutoSize;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.Event;

    public class Timer_constructorExample extends Sprite {
            private var statusTextField:TextField = new TextField();        
            private var inputTextField:TextField = new TextField();
            private var delay:uint = 30000;
            private var repeat:uint = 3;
            private var myTimer:Timer = new Timer(delay, repeat);
            
        public function Timer_constructorExample() {
            inputTextField.x = 10;
            inputTextField.y = 10;
            inputTextField.border = true;
            inputTextField.background = true;
            inputTextField.height = 200;
            inputTextField.width = 200;
            inputTextField.multiline = true;
            inputTextField.wordWrap = true;
            inputTextField.type = TextFieldType.INPUT;

            statusTextField.x = 10;
            statusTextField.y = 220;
            statusTextField.background = true;
            statusTextField.autoSize = TextFieldAutoSize.LEFT;   

            myTimer.start(); 
            statusTextField.text = "You have " + ((delay * repeat) / 1000) 
                                 + " seconds to write your response.";

            myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
            myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeHandler);

            addChild(inputTextField);
            addChild(statusTextField);
        }

        private function timerHandler(e:TimerEvent):void{
            repeat--;
            statusTextField.text = ((delay * repeat) / 1000) + " seconds left.";
        }

        private function completeHandler(e:TimerEvent):void {
            statusTextField.text = "Times Up.";
            inputTextField.type = TextFieldType.DYNAMIC;    
        }
    }
}
方法详细信息
reset()方法
public function reset():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

如果计时器正在运行,则停止计时器,并将 currentCount 属性设回为 0,这类似于秒表的重置按钮。然后,在调用 start() 后,将运行计时器实例,运行次数为指定的重复次数(由 repeatCount 值设置)。

另请参见

start()方法 
public function start():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

如果计时器尚未运行,则启动计时器。

stop()方法 
public function stop():void

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

停止计时器。如果在调用 stop() 后调用 start(),则将继续运行计时器实例,运行次数为剩余的 重复次数(由 repeatCount 属性设置)。

另请参见

事件详细信息
timer 事件
事件对象类型: flash.events.TimerEvent
属性 TimerEvent.type = flash.events.TimerEvent.TIMER

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

每当 Timer 对象达到根据 Timer.delay 属性指定的间隔时调度。

定义 timer 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 已达到其间隔的 Timer 对象。
timerComplete 事件  
事件对象类型: flash.events.TimerEvent
属性 TimerEvent.type = flash.events.TimerEvent.TIMER_COMPLETE

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

每当它完成 Timer.repeatCount 设置的请求数后调度。

定义 timerComplete 事件对象的 type 属性值。

此事件具有以下属性:

属性
bubbles false
cancelable false;没有要取消的默认行为。
currentTarget 当前正在使用某个事件侦听器处理 Event 对象的对象。
target 已完成其请求的 Timer 对象。
示例 如何使用示例
TimerExample.as

以下示例使用 TimerExample 类来说明如何将侦听器方法 timerHandler() 设置为侦听要调度的新 TimerEvent。计时器将在调用 start() 时启动,并且之后将调度计时器事件。
package {
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.display.Sprite;

    public class TimerExample extends Sprite {

        public function TimerExample() {
            var myTimer:Timer = new Timer(1000, 2);
            myTimer.addEventListener("timer", timerHandler);
            myTimer.start();
        }

        public function timerHandler(event:TimerEvent):void {
            trace("timerHandler: " + event);
        }
    }
}