2013-04-15 2 views
0

Я пытаюсь отправить событие каждую секунду из класса Mytimer и поймать событие из основного класса. Я объявила переменную «sus» как integer = 10. У меня пока ничего нет, нет вывода, ничего. Помогите пожалуйста!AS3 Как отправить событие таймера другому классу?

Это Mytimer.as

private function onUpdateTime(event:Event):void 
    { 

     nCount--; 
     dispatchEvent(new Event("tickTack", true)); 
     //Stop timer when it reaches 0 
     if (nCount == 0) 
     { 
      _timer.reset(); 
      _timer.stop(); 
      _timer.removeEventListener(TimerEvent.TIMER, onUpdateTime); 
      //Do something 
     } 
    }  

И в Main.as у меня есть:

public function Main() 
    { 
     // constructor code 
     _timer = new MyTimer ; 
     stage.addEventListener("tickTack", ontickTack); 
    } 

    function ontickTack(e:Event) 
    { 
     sus--; 
     trace(sus); 
    }  

ответ

2

В вашем Main.as, вы добавили слушателя на сцену, а не ваш таймер. Эта линия:

stage.addEventListener("tickTack", ontickTack); 

должно быть так:

_timer.addEventListener("tickTack", ontickTack); 

Но ActionScript уже имеет Timer класс, который выглядит, как он имеет все необходимые функции. Не нужно изобретать велосипед. Взгляните на documentation for the Timer class.

в главном вы могли бы просто сказать:

var count:int = 10; // the number of times the timer will repeat. 
_timer = new Timer(1000, count); // Creates timer of one second, with repeat. 
_timer.addEventListener(TimerEvent.TIMER, handleTimerTimer); 
_timer.addEventListener(TimerEvent.TIMER_COMPLETE, handleTimerTimerComplete); 

Затем просто добавить свои методы обработки. Вам не нужно использовать оба варианта. Зачастую события TIMER достаточно. Что-то вроде этого:

private function handleTimerTimerComplete(e:TimerEvent):void 
{ 
    // Fires each time the timer reaches the interval. 
} 

private function handleTimerTimer(e:TimerEvent):void 
{ 
    // Fired when all repeat have finished. 
} 
+0

Спасибо, спасибо. Это то, что я искал. Спасибо за быстрый ответ. Я делаю это, потому что хочу сохранить свой таймер в отдельном классе, поэтому я могу получить доступ к его времени в любое время. Я нашел этот способ очень удобным. Спасибо Adam – irnik

+0

Не беспокойтесь @irnik, не забудьте отметить ответ как правильный, если вы нашли то, что хотите. –

Смежные вопросы