定时器效率

时间:2016-09-10 22:43:53

标签: performance actionscript-3 timer actionscript

我正在开发一个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个字符后,帧速率开始下降。每次调用该函数时,帧速率都会越来越低。

我不明白的是,如果定时器停止,并且只添加一次听众,所以它不会使堆栈过载,那么为什么在收听者之后帧速率开始下降实际使用?它不会在很短的时间内永远运行,但它会一次又一次地发生。当帧速率下降时,整个程序开始严重滞后并最终冻结。我不知道是什么导致了这个

1 个答案:

答案 0 :(得分:0)

另请注意,在Timer功能内部,第一个数字是您在MILLISECONDS中的计数,第二个是重复计数

var fl_TimerInstance:Timer = new Timer(240000, 1);

所以上面这个例子是一个重复1次的4分钟计时器

我提出这个问题是因为你的设置为50毫秒,这是非常快的lol