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

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

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

Регистрация: Jan 2014
Сообщений: 11
По умолчанию работа с timer

Есть небольшая проблемка, может кто-то может посоветовать как сделать лучше..
Cоздаю пошаговую игру, ходы создаю с помощью таймера, по завершении таймер выдает событие Timer.COMPLETE через которое я запускаю нужный код для завершения хода и перезапускаю таймер, но также есть необходимость завершать ход заранее по нажатию кнопки.. досрочно timer завершить не получается.. думал изменить параметр currentTime но оно имеет свойство readonly...
В голову приходит лишь запуск второго такого же таймера по нажатию кнопки и по его событию timer отменять приемники события для старого таймера, но это выглядит как-то коряво, если например быстро завершить сразу 4-5 хода подряд то одновременно будут работать 6 таймеров...
буду рад услышать ваши советы!

Старый 31.01.2014, 14:44
BezDelnik вне форума Посмотреть профиль Отправить личное сообщение для BezDelnik Найти все сообщения от BezDelnik
  № 2  
Ответить с цитированием
BezDelnik

Регистрация: Jul 2008
Сообщений: 80
Отправить сообщение для BezDelnik с помощью ICQ
Код AS3:
timer.stop()
после этого запускайте его заново
Код AS1/AS2:
timer.start()

Старый 31.01.2014, 14:50
llell вне форума Посмотреть профиль Отправить личное сообщение для llell Найти все сообщения от llell
  № 3  
Ответить с цитированием
llell

Регистрация: Jan 2014
Сообщений: 11
а
Код AS3:
timer.stop()
разве вызывает событие timer.COMPLETE ?

Старый 31.01.2014, 15:05
llell вне форума Посмотреть профиль Отправить личное сообщение для llell Найти все сообщения от llell
  № 4  
Ответить с цитированием
llell

Регистрация: Jan 2014
Сообщений: 11
спасибо за совет
а чисто теоретически досрочно вызвать Timer.COMPLETE никак нельзя?

Старый 31.01.2014, 15:07
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
timer.dispatchEvent(new TimerEvent(Timer.COMPLETE))
__________________
Марк Tween

Старый 31.01.2014, 15:08
llell вне форума Посмотреть профиль Отправить личное сообщение для llell Найти все сообщения от llell
  № 6  
Ответить с цитированием
llell

Регистрация: Jan 2014
Сообщений: 11
спасибо!

Старый 31.01.2014, 15:15
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Ответить с цитированием
Akopalipsis
Banned

Регистрация: Mar 2013
Сообщений: 1,864
Если Вам нужно вызвать преднамеренно комплит для выполнения кода в обработчике -
Код AS3:
private function timer_timerComplete(event:TimerEvent=null):void 
{
 
}
И вызываете как обычный метод, но стоп всё равно включать нужно -
Код AS3:
timer_timerComplete();
Можно в самом обработчике -
Код AS3:
private function timer_timerComplete(event:TimerEvent=null):void 
{
	if (!event)
	{
		_timer.stop();
	}
}

Старый 31.01.2014, 15:21
llell вне форума Посмотреть профиль Отправить личное сообщение для llell Найти все сообщения от llell
  № 8  
Ответить с цитированием
llell

Регистрация: Jan 2014
Сообщений: 11
большое спасибо! )

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

Регистрация: Jun 2013
Сообщений: 133
Я бы просто расширил стандартный таймер:
Код AS3:
package  
{
	import flash.events.TimerEvent;
	import flash.utils.Timer;
 
	public class ExtendedTimer extends Timer 
	{
 
		public function ExtendedTimer(delay:Number, repeatCount:int=0) 
		{
			super(delay, repeatCount);
 
		}
 
		override public function stop():void 
		{
			super.stop();
 
			if(currentCount != repeatCount)
				dispatchEvent(new TimerEvent(TimerEvent.TIMER_COMPLETE));
		}
	}
}

Старый 31.01.2014, 15:32
llell вне форума Посмотреть профиль Отправить личное сообщение для llell Найти все сообщения от llell
  № 10  
Ответить с цитированием
llell

Регистрация: Jan 2014
Сообщений: 11
тоже думал над расширением таймера, спасибо за код! если не возражаете воспользуюсь

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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