Показать сообщение отдельно
Старый 22.05.2010, 10:47
TOKIO вне форума Посмотреть профиль Отправить личное сообщение для TOKIO Найти все сообщения от TOKIO
  № 3  
Ответить с цитированием
TOKIO

Регистрация: Apr 2010
Сообщений: 14
Цитата:
Сообщение от orcpochta Посмотреть сообщение
Код AS3:
private function digest(e:TimerEvent):void
{
	if (currentCalories - VirtualPet.caloriesPerSecond <= 0)
	{
		trace (getName( ) + " has died.");
		e.target.stop( );
                      e.target.removeEventListener(e.TimerEvent, digest); //отписываем обработчик
	}
	else
	{
		currentCalories -= VirtualPet.caloriesPerSecond;
		trace(getName( ) + "digested some food. It now has " + currentCalories + "calories remaining.");
	}
}
И, кстати, из Мука все примеры поддерживаются))) Это если вы про setInterval( ).
К сожалению код не помог, немного помогло вытаскивание переменной digestIntervalID из конструктора:

Код AS3:
private var digestIntervalID:Timer;
 
    public function VirtualPet (name) {
      setName(name);
	  var digestIntervalID = new Timer(1000, 0);
	  digestIntervalID.addEventListener(TimerEvent.TIMER, digest);
	  digestIntervalID.start( );
    }
Хотя теперь когда выполняется но когда выполняется

Код AS3:
currentCalories - VirtualPet.caloriesPerSecond <= 0
в окне Вывод появляется:

Stan has died.
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at VirtualPet/digest()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()


PS У меня setInterval( ) CS4 не компилирует и выдает ошибку.