Я не совсем уверен, что вы пытаетесь сделать, но я думаю, что знаю, в чем ваша проблема.Вычитая 30 из min
var, вы только манипулируете своим выводом.Таким образом, фактический таймер все еще считает реальные минуты.
Если вы хотите вычесть 30 минут из вашего таймера, вы должны сделать это при создании экземпляра d:Date
следующим образом:
const TIME_OFFSET:int = 1800000; //milliseconds in 30 minutes (1000*60*30)
var d:Date = new Date(getTimer()-baseTimer-TIME_OFFSET);
Не забудьтетакже удалите -30
для вашего var min:String
Я надеюсь, что это то, что вы ищете.
РЕДАКТИРОВАТЬ
Учитывая ваш комментарийесли у вас getTimer()
и baseTimer
есть большая разница, вы должны взглянуть на ссылки getTimer () .В нем говорится следующее:
Возвращает int - Количество миллисекунд с момента инициализации среды выполнения (при обработке ActionScript 2.0) или с момента виртуальной машины.запущен (при обработке ActionScript 3.0).Если среда выполнения начинает воспроизведение одного SWF-файла, а другой SWF-файл загружается позже, возвращаемое значение относится к моменту загрузки первого SWF-файла.
Когда я отслеживаю baseTimer
и getTimer()
внутри функции startTimer()
они всегда (более или менее) одинаковы.Похоже, в вашем случае что-то не так.
Обходной путь может использовать класс new Date().time
вместо getTimer()
, например, так:
private function updateTimer(evt:TimerEvent):void {
var d:Date = new Date(new Date().time - baseTimer);
var min:String = (MIN_MASK + d.minutes).substr(-MIN_MASK.length);
var sec:String = (SEC_MASK + d.seconds).substr(-SEC_MASK.length);
var ms:String = (MS_MASK + d.milliseconds).substr(-MS_MASK.length);
counter.text = String(min + ":" + sec + "." + ms);
}
private function startTimer():void {
baseTimer = new Date().time;
t.start();
}
Более подробную информацию можно найтив ссылка