我正在开发一个AS3项目,其中一个效果我使用定时器来切换颜色然后停止。功能如下。
//global variable
private var valueAnimationTimer:Timer = new Timer(50);
//constructor
valueAnimationTimer.addEventListener(TimerEvent.TIMER, scrollUp );
//function
private function scrollUp(e:TimerEvent):void
{
var i:int = e.currentTarget.currentCount as int;
if (i < 10)
{
if (colored){
if (i % 2 == 0){
ChangeColor(ico, flickerColor);
}
else{
ico.transform.colorTransform = new ColorTransform();
}
}
tfValue.y -= 7.5;
}
else
{
RemoveFilters(ico);
tfValue.y = ico.height / 2;
e.currentTarget.reset();
RemoveSprite(tfValue);
colored = false;
}
}
每个角色(物体)都拥有它自己的此功能版本,它会在不同时间发生(例如受伤或中毒时)。侦听器在构造函数中添加一次,只有在角色死亡并从舞台中删除时才会删除它。这里的问题是在定时器至少使用3个字符后,帧速率开始下降。每次调用该函数时,帧速率都会越来越低。
我不明白的是,如果定时器停止,并且只添加一次听众,所以它不会使堆栈过载,那么为什么在收听者之后帧速率开始下降实际使用?它不会在很短的时间内永远运行,但它会一次又一次地发生。当帧速率下降时,整个程序开始严重滞后并最终冻结。我不知道是什么导致了这个
答案 0 :(得分:0)
另请注意,在Timer功能内部,第一个数字是您在MILLISECONDS中的计数,第二个是重复计数
var fl_TimerInstance:Timer = new Timer(240000, 1);
所以上面这个例子是一个重复1次的4分钟计时器
我提出这个问题是因为你的设置为50毫秒,这是非常快的lol