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

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Кого тут спаивать? timer это Ваш Event.target, все остальное это его свойства.
У Вас правда компилится код, в котором переменная названа как импортированный Класс?
Может, стоит писать по конвенции? Классы с большой, члены классов — с маленькой?
Спасибо за беспокойство, но я считаю себя не таким уверенным человеком (знающим хорошо ActionScript 3), как вы, поэтому и позволил себе спросить. Спасибо ещё раз. Так, случайно пропустил на счёт "У Вас правда компилится код, в котором переменная названа как импортированный Класс?". Можете уточнить? Код компилируется, правда. Вот результат:
Количество повторов: 1
Количество повторов: 2
Количество повторов: 3
Количество повторов: 4
Количество повторов: 5
Количество повторов: 6
Количество повторов: 7
Количество повторов: 8
Количество повторов: 9
Количество повторов: 10
Миг настигнут!


Добавлено через 56 секунд
Цитата:
Сообщение от i.o. Посмотреть сообщение
А я подумал, что речь про вот такое шла. Может и ошибаюсь
Мышкой нужно потыкать.
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;
 
	public class Main extends Sprite
	{
		public function Main()
		{
			if (stage)
				stage.addEventListener(MouseEvent.CLICK, _onMClick);
 
			_timer = new Timer(0, 1);
			_timer.addEventListener(TimerEvent.TIMER_COMPLETE, _onTimerComplete);
		}
 
 
		private var _timer : Timer;
		private var _timerStartTime : int = -1;
 
 
		private function _getTimerTime() : int
		{
			if (_timer.running)
				return (getTimer() - _timerStartTime);
			return -1;
		}
 
		private function _restartTimer() : void
		{
			if (_timer.running)
				_timer.reset();
 
			_timer.delay = 100 + 1000 * Math.random();
			_timer.start();
			_timerStartTime = getTimer();
 
			this.addEventListener(Event.ENTER_FRAME, _printTimerProgressEveryFrame);
 
			trace("=== TIMER STARTED ===");
		}
 
		private function _onMClick( e:MouseEvent ) : void
		{
			if (_timer.running)
				trace(_getTimerTime());
			else
				_restartTimer();
		}
 
		private function _printTimerProgressEveryFrame( e:Event ) : void
		{
			var t:int = _getTimerTime();
			var p:Number = 100.0 * Math.min(1.0, (t / _timer.delay));
			p = Math.round(10 * p) / 10;
 
			trace("Progress: " + p.toFixed(1) + " %     " + t + " of " +  int(_timer.delay) + " ms");
		}
 
		private function _onTimerComplete( e:TimerEvent ) : void
		{
			trace("=== TIMER COMPLETE ===");
 
			this.removeEventListener(Event.ENTER_FRAME, _printTimerProgressEveryFrame);
		}
	}
}
Код:
=== TIMER STARTED ===
Progress: 2.2 %     13 of 582 ms
Progress: 7.0 %     41 of 582 ms
Progress: 12.9 %     75 of 582 ms
Progress: 18.7 %     109 of 582 ms
Progress: 24.2 %     141 of 582 ms
Progress: 30.1 %     175 of 582 ms
Progress: 36.1 %     210 of 582 ms
Progress: 41.6 %     242 of 582 ms
Progress: 47.1 %     274 of 582 ms
Progress: 52.9 %     308 of 582 ms
Progress: 58.7 %     342 of 582 ms
Progress: 64.2 %     374 of 582 ms
Progress: 70.1 %     408 of 582 ms
Progress: 75.9 %     442 of 582 ms
Progress: 81.4 %     474 of 582 ms
Progress: 87.4 %     509 of 582 ms
Progress: 92.9 %     541 of 582 ms
Progress: 98.8 %     575 of 582 ms
Progress: 100.0 %     607 of 582 ms
=== TIMER COMPLETE ===
=== TIMER STARTED ===
Progress: 16.8 %     32 of 190 ms
Progress: 34.6 %     66 of 190 ms
Progress: 51.4 %     98 of 190 ms
Progress: 69.2 %     132 of 190 ms
Progress: 87.0 %     166 of 190 ms
Progress: 100.0 %     198 of 190 ms
=== TIMER COMPLETE ===
Спасибо, сохранил, теперь попробую понять, что да как. Понравилось как вы сделали: "увеличение количества процентов".

Добавлено через 4 минуты
Цитата:
Сообщение от ChuwY Посмотреть сообщение
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
 
	public class TimTest extends Sprite
	{
		private static const DELAY : Number = 100;
		private static const REPEAT_COUNTS : uint = 100;
		private var _timer : Timer = new Timer(DELAY, REPEAT_COUNTS);
		public function TimTest()
		{
			_timer.addEventListener(TimerEvent.TIMER, onTimer);
			_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
			_timer.start();
		}
 
		//*** handlers ***//
		private function onTimer(event : TimerEvent):void
		{
			var lastMsec : Number = (_timer.repeatCount - _timer.currentCount)*_timer.delay;
			trace("До конца отсчета осталось " + lastMsec + " миллисекунд");
		}
 
		private function onTimerComplete(event : TimerEvent):void
		{
			trace('Таймер завершил работу');
		}
	}
}
И вам спасибо. Только вопрос: почему именно 'Number = (_timer.repeatCount - _timer.currentCount)*_timer.delay;', находится в переменной lastMsec? Я попробовал реализовать без этой переменной, результат тот же. Может наличие переменной — это пример правильной работы, по конвенции? Если вам будет не сложно, то подкиньте какое-нибудь имя автора, например Мука, где об этом написано. Удачи.