Timer管理

对比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]();
}
}
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值