Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.05.2011, 16:40
Ylik вне форума Посмотреть профиль Отправить личное сообщение для Ylik Найти все сообщения от Ylik
  № 1  
Ответить с цитированием
Ylik
 
Аватар для Ylik

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
По умолчанию Остановить таймер (или много таймеров)

Здравствуйте профессионалы! Возникла очередная проблема с 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();
}
Только изучаю, так что пока далеко не всё понятно.
Искала, искала, по-всякому переписывала, но всё-равно не работает как надо (хотя, вроде, уж писала так же, как в примерах). Очень прошу помощи разобраться! Спасибо огромное!


Последний раз редактировалось alexcon314; 17.05.2011 в 09:09.
Старый 16.05.2011, 16:52
Cheburashka вне форума Посмотреть профиль Отправить личное сообщение для Cheburashka Найти все сообщения от Cheburashka
  № 2  
Ответить с цитированием
Cheburashka

Регистрация: Apr 2010
Сообщений: 43
Проверьте срабатывает ли метод timerStop. Скорее всего нет.

Старый 16.05.2011, 16:57
Ylik вне форума Посмотреть профиль Отправить личное сообщение для Ylik Найти все сообщения от Ylik
  № 3  
Ответить с цитированием
Ylik
 
Аватар для Ylik

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

Старый 16.05.2011, 16:58
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
var timer:Timer = new Timer(5000, 1);
Не срабатывает, потому что он уже остановился? Судя по этой строчке, он выполнится лишь один раз через 5 секунд, так и надо?
__________________
тут я

Старый 16.05.2011, 16:58
Cheburashka вне форума Посмотреть профиль Отправить личное сообщение для Cheburashka Найти все сообщения от Cheburashka
  № 5  
Ответить с цитированием
Cheburashka

Регистрация: Apr 2010
Сообщений: 43
А возможно такое, что создается случайно несколько таймеров?
Присоедините код, так понятней будет.

Старый 16.05.2011, 16:59
honest_man вне форума Посмотреть профиль Отправить личное сообщение для honest_man Найти все сообщения от honest_man
  № 6  
Ответить с цитированием
honest_man

Регистрация: Aug 2010
Сообщений: 86
Цитата:
Сообщение от Ylik Посмотреть сообщение
По нажатию кнопки запускается таймер.
Пытаюсь сделать, чтобы при нажатии другой кнопки, таймер сразу останавливался.
Что это значит? У мышки всего одна кнопка в АС. Ведь имеется в виду кнопка мыши? cужу по MouseEvent

Старый 16.05.2011, 16:59
Ylik вне форума Посмотреть профиль Отправить личное сообщение для Ylik Найти все сообщения от Ylik
  № 7  
Ответить с цитированием
Ylik
 
Аватар для Ylik

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
Хотя... что-то я уже запуталась...
Как можно точно проверить?

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

Старый 16.05.2011, 17:01
honest_man вне форума Посмотреть профиль Отправить личное сообщение для honest_man Найти все сообщения от honest_man
  № 8  
Ответить с цитированием
honest_man

Регистрация: Aug 2010
Сообщений: 86
аа, нажатие на отдельные объекты... хм. а можно полную структуру увидеть?

Старый 16.05.2011, 17:02
Ylik вне форума Посмотреть профиль Отправить личное сообщение для Ylik Найти все сообщения от Ylik
  № 9  
Ответить с цитированием
Ylik
 
Аватар для Ylik

Регистрация: Sep 2010
Адрес: Saint-Petersburg
Сообщений: 143
Сейчас попробую написать

Добавлено через 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 минут
Ну что, никто не понял, в чём может быть проблема?
Я не понимаю...


Последний раз редактировалось Ylik; 16.05.2011 в 17:10.
Старый 16.05.2011, 18:00
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 10  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Логика не ясна.

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();
}
__________________
Нормально делай — нормально будет!


Последний раз редактировалось tsarapkabel; 16.05.2011 в 18:03.
Создать новую тему Ответ Часовой пояс GMT +4, время: 06:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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