
Код AS3:
package pocket.clock
{
import flash.utils.getTimer;
/**
* Игровые часы.
* Содержит текущее время, которое берётся из системы пользователя.
* Можно синхронизировать часы, указав собственное текущее время.
* @author Roman A.V.
*/
public class Clock
{
// Приват
private var _runDate:Number;
/**
* Создать часы.
* Текущее время берётся из системы пользователя.
*/
public function Clock()
{
// Инициализация.
// Получаем системное время:
_runDate = new Date().time;
// Вычитаем уже прошедшее время, так-как используем дату как точку отсчёта:
_runDate -= getTimer();
// Не может быть NaN или меньше 0:
if (isNaN(_runDate) || _runDate < 0)
_runDate = 0;
}
// ПАБЛИК
/**
* Синхронизировать текущее время.
* Передайте текущее время, если требуется синхронизировать часы.
* Этот вызов также изменит значение переменной <code>runDate</code>.
* @param time Миллисекунды, прошедшие с 1 января 1970 года.
*/
public function setCurrentTime(time:Number):void
{
_runDate = time - getTimer();
// Не может быть NaN или меньше 0:
if (isNaN(_runDate) || _runDate < 0)
_runDate = 0;
}
// ГЕТТЕРЫ
/**
* Дата запуска приложения. (mc)
* Указывает дату, когда было запущено текущее приложение.
* Миллисекунды, прошедшие с 1 января 1970 года.
* Не может быть NaN или меньше 0.
*/
public function get runDate():Number
{
return _runDate;
}
/**
* Текущее время. (mc)
* Возвращает количество миллисекунд, прошедших на момент вызова с 1 января 1970 года.
* Не может быть NaN.
*/
public function get currentTime():Number
{
return _runDate + getTimer();
}
}
}