间隔和超时
import flash.utils.*;
var intervalId:uint=setInterval(schroedingerCat,1000);
// execute a function once per second and gather interval ID
trace("Cat's been closed in the box.");
function schroedingerCat():void {
if (Math.random()<0.04) {
clearInterval(intervalId); // stop repeating by ID
trace("Cat's dead.");
return;
}
trace("Cat's still alive...");
}
var bombId:uint;
function plantBomb(seconds:Number):uint {
trace("The bomb has been planted, and will blow in "+seconds.toFixed(3)+" seconds!");
var id:uint=setTimeout(boom,seconds*1000); // parameter is in milliseconds
return id;
}
function defuseBomb(id:uint):void {
clearTimeout(id);
trace("Bomb with id",id,"defused!");
}
function boom():void {
trace("BOOM!");
}
setInterval()
用于以指定的间隔异步执行重复的任务。使用内部 Timer
对象,uint
类型的返回值是其内部 ID,你可以通过调用 clearInterval()
来访问和停止重复。setTimeout()
和 clearTimeout()
的工作方式类似,但对提供的函数的调用只进行一次。你可以为两个 set 函数提供其他参数,这些参数将按顺序传递给函数。在编译时不检查参数的数量及其类型,因此,如果你提供一个奇怪的参数组合,或者需要它们并且不接收任何参数的函数,则会引发错误“错误#1063:参数计数不匹配”。
你可以使用常规 Timer
对象执行 setInterval
和 setTimeout
的两个事件,使用 0 或 1 表示 repeatCount
属性,0 表示无限重复,1 表示一个。