Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Остановить таймер (или много таймеров) (http://www.flasher.ru/forum/showthread.php?t=156097)

Ylik 16.05.2011 16:40

Остановить таймер (или много таймеров)
 
Здравствуйте профессионалы! Возникла очередная проблема с AS3, и я снова обращаюсь к вам.
По нажатию кнопки запускается таймер.
Пытаюсь сделать, чтобы при нажатии другой кнопки, таймер сразу останавливался.
Запускаться запускается, а уже не останавливается (именно по нажатию).
Вот такой кодик:
Код AS3:

function timerStop(e:MouseEvent):void {
                timer.stop();
                timer.removeEventListener(TimerEvent.TIMER,onTimer);
                timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
}
 
var timer:Timer = new Timer(5000, 1);
 
function onClick(e:MouseEvent):void{
                timer.addEventListener(TimerEvent.TIMER, onTimer);
                timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
                timer.start();
}

Только изучаю, так что пока далеко не всё понятно. :(
Искала, искала, по-всякому переписывала, но всё-равно не работает как надо (хотя, вроде, уж писала так же, как в примерах). Очень прошу помощи разобраться! Спасибо огромное!

Cheburashka 16.05.2011 16:52

Проверьте срабатывает ли метод timerStop. Скорее всего нет.

Ylik 16.05.2011 16:57

То, что функция timerStop работает - это точно (там ещё происходят некие изменения на экране, при выполнении timerStop).
Просто таймер не реагирует именно на timer.stop();. Как-то так. :(

КорДум 16.05.2011 16:58

Код AS3:

var timer:Timer = new Timer(5000, 1);

Не срабатывает, потому что он уже остановился? Судя по этой строчке, он выполнится лишь один раз через 5 секунд, так и надо?

Cheburashka 16.05.2011 16:58

А возможно такое, что создается случайно несколько таймеров?
Присоедините код, так понятней будет.

honest_man 16.05.2011 16:59

Цитата:

Сообщение от Ylik (Сообщение 996442)
По нажатию кнопки запускается таймер.
Пытаюсь сделать, чтобы при нажатии другой кнопки, таймер сразу останавливался.

Что это значит? У мышки всего одна кнопка в АС. Ведь имеется в виду кнопка мыши? cужу по MouseEvent

Ylik 16.05.2011 16:59

Хотя... что-то я уже запуталась...
Как можно точно проверить?

Добавлено через 42 секунды
Нет, две кнопки на сцене.

honest_man 16.05.2011 17:01

аа, нажатие на отдельные объекты... хм. а можно полную структуру увидеть?

Ylik 16.05.2011 17:02

Сейчас попробую написать

Добавлено через 6 минут
Код AS1/AS2:

mc1.visible=false;
mc2.visible=true;
 
function timerStop(e:MouseEvent):void {
                mc2.visible=false;
                timer.stop();
                timer.removeEventListener(TimerEvent.TIMER,onTimer);
                timer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
}
 
var timer:Timer = new Timer(5000, 1);
 
function onClick(e:MouseEvent):void{
                mc1.visible=true;
                timer.addEventListener(TimerEvent.TIMER, onTimer);
                timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
                timer.start();
}
 
function onTimer(event:TimerEvent):void {
                mc1.visible=false;
}
 
function onTimerComplete(event:TimerEvent):void {
                mc2.visible=true;
}

Как-то так

Добавлено через 46 минут
Ну что, никто не понял, в чём может быть проблема? :(
Я не понимаю...

tsarapkabel 16.05.2011 18:00

Логика не ясна.

1)
mc1 = 0
mc2 = 1

2) По клику:
mc1 = 1
запускается таймер, который срабатывает 1 раз и одновременно диспатчатся оба события
mc1 = 0
mc2 = 1 (зачем? оно итак true)

3) И по коду никто не вызывает функцию timerStop()!!!
Почему она принимает MouseEvent?

Можно, например, написать в последнее событие:
Код AS3:

function onTimerComplete(event:TimerEvent):void {
                mc2.visible=true;
                timerStop();
}



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

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