Вспышка: одновременно меняются цифры? - PullRequest
0 голосов
/ 31 января 2011

Как создать одновременно изменяющийся номер во флэш-памяти? Что-то вроде секунд миллисекунд на секундомере, например, как они меняются в ответной реакции.

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 31 января 2011

прочитайте это, оно даст вам всю необходимую информацию: http://www.republicofcode.com/tutorials/flash/as3timer/

но по сути вам просто нужно что-то вроде этого

var myTimer:Timer = new Timer(10,0);
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
myTimer.start();

function timerListener (e:TimerEvent):void{
  trace("10 ms passed");
}

таймер не точный (поэтому вы получите +/- несколько миллисекунд здесь или там в зависимости от нагрузки, поэтому, если вы хотите использовать его для отображения времени, используйте getTimer () http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html


Точность в миллисекундах было бы довольно сложно создать таким способом, и нет смысла обновлять таймер чаще, чем частота кадров, так как пользователь не может видеть результат. (если вы не делаете больше, чем отображаете время)

но ваш код может выглядеть примерно так

var myTimer:Timer = new Timer(10,0);
var startTime:int = -getTimer();
myTimer.addEventListener(TimerEvent.TIMER, timerListener);
myTimer.start();

function timerListener (e:TimerEvent):void{
  someTextfield.text = ("ms passed: " + getTimer()+startTime );
}

, который покажет вам на someTextfield количество пройденных мс;

0 голосов
/ 31 января 2011

Если вы хотите получить эффект, подобный матрице, вам, вероятно, лучше будет создать мувиклип. Нет никакого смысла делать дополнительные вычисления, и иметь кучу слушателей событий, обновляющих текстовое поле выше частоты кадров, излишне.

Добавьте фильтр вертикального размытия на числа (или наложите другой номер с пониженной непрозрачностью) и попросите их пропустить числа. Это будет выглядеть так, как будто оно быстро обновляется, потому что простое изменение чисел не даст такого эффекта.

0 голосов
/ 31 января 2011

Один из способов сделать это - изменить номер каждого кадра.Для этого вы можете использовать событие Enter Frame.Вот пример.

var frameCount:int = 0;

// Add an event listener that will fire on each ENTER_FRAME event.
addEventListener(Event.ENTER_FRAME, OnEnterFrame);

//This function will get called after each frame
function OnEnterFrame(e:Event):void{
    frameCount++;
    trace(frameCount);
}

Этот пример будет отслеживать frameCount один раз за кадр (несколько раз в секунду).Если вы хотите вместо этого отслеживать время, вам нужно сделать 2 вещи.

  1. Объявить переменную для времени запуска таймера и установить ее на текущее время, которое может бытьсделано следующим образом:

    var startTime: Number = (new Date ()). time;

  2. Внутри функции OnEnterFrame возьмите новое время, используя то же самое (newМетод Date ()). Time и вычтите из него время начала.Это даст вам разницу в миллисекундах между началом таймера и текущим временем.

События являются большой частью AS3, вот учебник если вы хотите узнать больше.Надеюсь, это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...