Цитата:
Сообщение от 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? Я попробовал реализовать без этой переменной, результат тот же. Может наличие переменной — это пример правильной работы, по конвенции? Если вам будет не сложно, то подкиньте какое-нибудь имя автора, например Мука, где об этом написано. Удачи.