我对计时器有些麻烦。我的目标是在MOUSE_OVER时调用它并在MOUSE_OUT时将其终止。
启动计时器的功能:
public function timerStart():void {
var myTimer:Timer = new Timer(1000, 1); // 1 second
myTimer.addEventListener(TimerEvent.TIMER, runOnce);
myTimer.start();
}
停止计时器的功能:
public function timerStop():void {
myTimer.stop();
}
调用计时器的功能:
public function rollOverHandler(e:MouseEvent = null):void
{
timerStart();
}
调用停止计时器的功能:
internal final function rollOutHandler(e:MouseEvent = null):void
{
timerStop(); //this one created the error message
}
无论我尝试什么,我都会收到此错误消息:
1120: Access of undefined property myTimer.
我理解他无法阻止他不认识的计时器。但是我甚至在任何鼠标操作之前都会收到错误。我看错了什么?
有人知道解决方案吗?
答案 0 :(得分:4)
问题是scope:您将myTimer声明为局部变量。执行timerStart()后将删除引用。
将其设为member variable,一切正常。
哦,还有:在rollOutHandler中执行此操作:
if (myTimer != null) timerStop();
确保只有在设置了计时器后才会调用它。
答案 1 :(得分:0)
谢谢Weltraumpirat!你的回答刚刚结束了我的一天!
public static var myTimer:Timer;
public function timerStart():void {
// 1 second
myTimer = new Timer(1000, 1)
myTimer.addEventListener(TimerEvent.TIMER, runOnce);
myTimer.start();
}
public function timerStop():void {
myTimer.stop();
}
public function rollOverHandler(e:MouseEvent = null):void
{
timerStart();