我正在使用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
答案 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();
}