Как уменьшить время таймера во время его работы (ActionScript 3.0) - PullRequest
0 голосов
/ 06 марта 2012

В моем случае таймер, который я делаю, не сокращает время, когда вызывается функция. Какой код я буду изменять или добавлять, чтобы сократить время в моем таймере?

Код таймера:

var count:Number = 1200;
var lessTime:Number = 180;
var totalSecondsLeft:Number = 0;
var timer:Timer = new Timer(1000, count);
timer.addEventListener(TimerEvent.TIMER, countdown);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, timesup);

function countdown(event:TimerEvent) {
    totalSecondsLeft = count - timer.currentCount;
    this.mainmc.time_txt.text = timeFormat(totalSecondsLeft);
}

function timeFormat(seconds:int):String {
var minutes:int;
var sMinutes:String;
var sSeconds:String;
if(seconds > 59) {
    minutes = Math.floor(seconds / 60);
    sMinutes = String(minutes);
    sSeconds = String(seconds % 60);
    } else {
    sMinutes = "";
    sSeconds = String(seconds);
}
if(sSeconds.length == 1) {
    sSeconds = "0" + sSeconds;
}
return sMinutes + ":" + sSeconds;
}

function timesup(e:TimerEvent):void {
    gotoAndPlay(14);
}

В этот момент timer.start(); размещается на кадре, так что таймер запускается, когда он входит в кадр.

1 Ответ

3 голосов
/ 06 марта 2012

Свойство delay на Timer - это то, что вы ищете.В вашем обработчике измените задержку таймера:

function countdown(event:TimerEvent)
{
    totalSecondsLeft = count - timer.currentCount;
    this.mainmc.time_txt.text = timeFormat(totalSecondsLeft);

    //change the timer delay
    timer.delay -= lessTime;
}

В вашем примере кода я предполагал, что вы хотите вычесть lessTime из задержки таймера на каждом интервале таймера.Если вы хотите изменить задержку на что-то другое, просто измените код соответствующим образом.

ОБНОВЛЕНИЕ
Приведенный выше код предназначен для уменьшения интервала (delay) между каждым таймером.Пожар.Если вместо этого вы хотите уменьшить количество интервалов (repeatCount), которое требуется таймеру для достижения TIMER_COMPLETE, тогда вы хотите изменить свойство repeatCount на Timer:

//set the timer fire interval to 1 second (1000 milliseconds)
//and the total timer time to 1200 seconds (1200 repeatCount)
var timer:Timer = new Timer(1000, 1200);

//reduce the overall timer length by 3 minutes
timer.repeatCount -= 300;

ДРУГОЕ ОБНОВЛЕНИЕ
Имейте в виду, что когда вы изменяете repeatCount, это не влияет на currentCount.Поскольку вы используете отдельную переменную count и timer.currentCount для вычисления отображаемого оставшегося времени, похоже, что ничего не меняется.Хотя на самом деле это так - таймер завершит работу до того, как отображаемое время начнет обратный отсчет до нуля.Чтобы обеспечить точное отображение оставшегося времени, обязательно вычтите ту же сумму из count, что и из repeatCount:

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