Flex 3:计时器不会停止

时间:2010-11-18 17:15:41

标签: flex timer

我正在使用Flex 3和Flash 9。

我正在尝试制作一个在1秒后运行一次的计时器。不幸的是,我的计时器不断重复我怎么让它停下来?

public var myTimer:Timer = new Timer(1000, 1);


private function visFunc():void {

   myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, imageProducer);
   myTimer.start();

}

private function imageProducer(event:TimerEvent):void {


   var img:Image = new Image;
   img.source = image_path;
   img.x = 56;
   img.y = (tf.y + tf.height + 40);
   radioVBox.addChildAt(img, 0);
   this.height = radioVBox.y + radioVBox.height +110;
   myTimer.stop();
   myTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, imageProducer);
}

谢谢。

-Laxmidi

1 个答案:

答案 0 :(得分:1)

我将我的代码更改为以下并运行一些测试,因为我没有看到任何重大问题...但是,如果你没有调试和/或没有运行flashplayer的调试版,某些内容可能会在vbox.addChild行上爆炸(例如 - null vbox)。如果你的imageProducer函数很酷,那么你的问题就不在'调用'函数中了。

private var myTimer : Timer;

private function visFunc():void
{
    if(myTimer != null) 
    {
        tearDownTimer();
    }

    myTimer = new Timer(1000,1);
    myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, imageProducer);
    myTimer.start();

}

private function tearDownTimer():void
{
    if(myTimer) 
    {
        myTimer.stop();
        myTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, imageProducer);
        myTimer = null;
    }
}


private function imageProducer(event:TimerEvent):void
{
   var img:Image = new Image();
   img.source = image_path;
   img.x = 56;
   img.y = (tf.y + tf.height + 40);
   radioVBox.addChildAt(img, 0);
   this.height = radioVBox.y + radioVBox.height +110;

   tearDownTimer();
}