对比9ria上的一个 http://bbs.9ria.com/thread-747-1-1.html?/html/about.html
setTimeOut(函数名,延迟时间,参数):设置超时时间,只会执行一次!
setInterval(函数名,延迟时间,参数):设置一个间隔时间,间隔多久会触发一次!除非remove,否则会永久执行下去!
Timer(延迟时间,执行次数):设置一个间隔时间,有次数限制,只执行制定次数!
推荐Timer()
下面是一个实战中的代码实例。
package
{import flash.display.MovieClip;
import flash.events.TimerEvent;
import flash.utils.Dictionary;
import flash.utils.Timer;
public class TimerManager
{
private static var _instance:TimerManager=null;
private var _mc:MovieClip;
private var timerDic:Dictionary;
private var funcToTimerDic:Dictionary;
private var funcListDic:Dictionary
public function TimerManager()
{
timerDic=new Dictionary();//存储new的timer 按照延时长短处理
funcToTimerDic=new Dictionary();//存储new的timer 按照fun存储
funcListDic=new Dictionary();//存储要调用的方法
}
public static function getInstance():TimerManager
{
if(_instance==null)
{
_instance=new TimerManager();
}
return _instance;
}
public function add(delay:int,func:Function):void
{
if(funcToTimerDic[func]!=undefined)return;
funcToTimerDic[func]=createTimer(delay);
funcListDic[delay].push(func);//把此时的dic的此个obj看成数组,,存储方法为每个元素。。。
}
public function remove(func:Function):void
{
if(funcToTimerDic[func]==undefined)return;
var timer:Timer=funcToTimerDic[func];
delete funcToTimerDic[func];
var list:Array=funcListDic[timer.delay];
if(list.indexOf(func)>-1)
{
list.splice(list.indexOf(func),1);
}
if(list.length==0)
{
timer.stop();
timer.removeEventListener(TimerEvent.TIMER,timerHandler);
delete funcListDic[timer.delay];
delete timerDic[timer.delay];
}
}
private function createTimer(delay:int):Timer
{
if(timerDic[delay]==undefined)
{
var timer:Timer=new Timer(delay);
timer.addEventListener(TimerEvent.TIMER,timerHandler);
timer.start();
timerDic[delay]=timer;
}
if(funcListDic[delay]==undefined)
{
funcListDic[delay]=new Array();
}
return timerDic[delay];
}
private function timerHandler(e:TimerEvent):void
{
var list:Array=funcListDic[Timer(e.target).delay];
for(var i:* in list)
{
list[i]();
}
}
}
}