Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   timer не происходит событие (http://www.flasher.ru/forum/showthread.php?t=163285)

Max360 07.08.2011 20:22

timer не происходит событие
 
здравствуйте. событие таймера не происходит, код зацикливается, почему?
Код AS3:

var t:Timer = new Timer(1000);
 
t.addEventListener(TimerEvent.TIMER, onTimer);
var i:Boolean = true;
while(i){
        t.start();
}
 
function onTimer(e:TimerEvent):void{
        i = false;
}


alatar 07.08.2011 20:25

У вас приложение зависает. До события дело не доходит.

СлаваRa 07.08.2011 20:25

Что Вы делаете?

Код AS3:

var i:Boolean = true;
while(i){
        t.start();
}

замените на
Код AS3:

t.start();

после отработки таймера вызывайте restar и запускайте снова, у Вас получается бесконечный цикл с запуском таймера, который не успевает "обнулить" i

КорДум 07.08.2011 20:41

Влияние C#, где таймер работает в другом потоке? Нет, во флеше поток всегда один. Добавится такая возможность (правда, пока не вижу в ней чего-то на самом деле путного) в FP11 релизе.

Max360 07.08.2011 20:59

да, неудачный пример. У меня в цыкле while выполняется блок кода, я хочу чтобы каждая итерация цыкла выполнялась с задержкой. Вот я и запустил там таймер, а код оттуда вынес в приемник события таймера. Может есть другое решение?
Код AS3:

flag = true;
while(flag){
    timer.start();
}
 
function onTimer(e){
    //необходимый код
  flag = false;
}


СлаваRa 07.08.2011 21:03

у таймера есть свойство repeatCount, вешайте обработчик timerComplete, и выполняйте код из блока while по событию.

Max360 07.08.2011 21:04

нашел, решение, убрал цыкл, а вместо него занес в "необходимый код" условие выхода, т.е. заменил while. Всем спасибо, все работает )

Добавлено через 25 минут
а в функцию-приемник, можно передать какой-нибудь параметр, кроме e:Event?

dimarik 07.08.2011 21:47

Цикле, а не цыкле.

Max360 07.08.2011 23:08

Цитата:

Сообщение от dimarik (Сообщение 1019014)
Цикле, а не цыкле.

приму на вооружение )))

Psycho Tiger 08.08.2011 21:43

Цитата:

а в функцию-приемник, можно передать какой-нибудь параметр, кроме e:Event?
Можно.
Код AS3:

private function handler(event:Event, yourParam:Object = null):void

Но я думаю, Вы о другом спрашиваете. Попробуйте Dictionary.
Код AS3:

hash = new Dictionary();
hash[timer]=50;
...
private function handler(event:Event):void{
trace(hash[event.currentTarget]);
}



Часовой пояс GMT +4, время: 12:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.