Сразу же замечу, что таймер, о котором пойдёт речь в этом уроке, будет создан с помощью класса Timer. Про этот класс и его применение я уже писал в посте «Класс Timer в ActionScript 3.0». Поэтому лишний раз повторяться не буду и сосредоточусь на сути урока.
Итак, приступим...
Сперва надо сделать пару заготовок, а именно:
- динамическое текстовое поле по имени timerTF, в котором будет выводится время;
- кнопка по имени btn, которая будет запускать/останавливать работу таймера.
После этого можно переходить к коду...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.utils.Timer;
import flash.events.TimerEvent;
/*
переменная, которая хранит точку отсчёта (в миллисекундах)
*/
var beginTime:uint;
/*
создаём таймер
*/
var timer:Timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER, onTimer);
/*
функция, которую с заданной периодичностью вызывает ранее созданный таймер
*/
function onTimer(event:TimerEvent):void
{
timerTF.text = (new Date().getTime() - beginTime).toString();
}
/*
клик по кнопке btn запускает функцию onClick
*/
btn.addEventListener(MouseEvent.CLICK, onClick);
function onClick(event:MouseEvent):void
{
if (timer.running)
{
/*
если таймер запущен, то он будет остановлен
*/
timer.stop();
}
else
{
/*
если таймер был остановлен, то он запускается + устанавливается новая точка отсчёта
*/
beginTime = new Date().getTime();
timer.start();
}
}
В принципе, таймер готов. Но только отсчёт времени он ведёт в миллисекундах, а это не очень удобно. Давайте отформатируем выводимое таймером время под популярный формат hh:mm:ss. Для этого добавим в наш код специальную функцию msFormat()...
Код ActionScript 3.0:
/*
импорт классов
*/
import flash.utils.Timer;
import flash.events.TimerEvent;
/*
переменная, которая хранит точку отсчёта (в миллисекундах)
*/
var beginTime:uint;
/*
первоначальная надпись в текстовом поле
*/
timerTF.text = "00:00:00";
/*
создаём таймер
*/
var timer:Timer = new Timer(100);
timer.addEventListener(TimerEvent.TIMER, onTimer);
/*
функция, которую с заданной периодичностью вызывает ранее созданный таймер
*/
function onTimer(event:TimerEvent):void
{
//timerTF.text = (new Date().getTime() - beginTime).toString();
timerTF.text = msFormat(new Date().getTime() - beginTime);
}
/*
клик по кнопке btn запускает функцию onClick
*/
btn.addEventListener(MouseEvent.CLICK, onClick);
function onClick(event:MouseEvent):void
{
if (timer.running)
{
/*
если таймер запущен, то он будет остановлен
*/
timer.stop();
}
else
{
/*
если таймер был остановлен, то он запускается + устанавливается новая точка отсчёта
*/
beginTime = new Date().getTime();
timer.start();
}
}
/*
функция, которая переводит время, выраженное в миллисекундах, в удобный для человека формат
*/
function msFormat(n:uint,delimiter:String=":"):String
{
var h:uint = Math.floor(n / 3600000) % 24;
var m:uint = Math.floor(n / 60000) % 60;
var s:uint = Math.floor(n / 1000) % 60;
var hs:String = h.toString();
var ms:String = m.toString();
var ss:String = s.toString();
if (h < 10)
{
hs = "0" + hs;
}
if (m < 10)
{
ms = "0" + ms;
}
if (s < 10)
{
ss = "0" + ss;
}
return hs + delimiter + ms + delimiter + ss;
}
Результат:
Вот и всё!
Скачать исходник к данному посту можно тута - скачать исходник (под Adobe Flash CS 5).
var array:Array = new Array(1.1, 2.2, 3.3);
addEventListener(Event.ENTER_FRAME, onEnterFramesFunc);
function onEnterFramesFunc(event:Event):void
{
var curVar:Number = array[this.currentFrame - 1];
trace(curVar)
}