【问题标题】:Action Script 3.0. Remake timer to countdown timer动作脚本 3.0。将计时器重制为倒数计时器
【发布时间】:2015-03-29 12:09:26
【问题描述】:

我有一个计时器,它以mm:ss 的格式计数时间从00:00 开始。我需要制作从30秒开始的倒计时

我的计时器看起来像:

public class Test extends Sprite {

        var timer:Timer; 
        var txtTime:TextField;
        var tmpTime:Number;  //this will store the time when the game is started 
}

function game(e:MouseEvent) {
            timer = new Timer(0); //create a new timer that ticks every second.
            timer.addEventListener(TimerEvent.TIMER, tick, false, 0, true);              //listen for the timer tick
            timer.addEventListener(TimerEvent.TIMER, resetTimer);
            txtTime = new TextField();
            txtTime.text = setNull(0);

            var format:TextFormat = new TextFormat();
            format.color = 0x000000;
            format.size = 22;
            format.bold = true;
            txtTime.defaultTextFormat = format;
            txtTime.x = 603;
            txtTime.y = 143;
            addChild(txtTime);

            timer.reset();

            tmpTime = flash.utils.getTimer();
            timer.start();
}

        function setNull(startTime:int):String
        {
            return "00:00";
        }
        private function tick(e:Event):void {
            txtTime.text = showTimePassed(tmpTime);
        }
        function showTimePassed(startTime:int):String {
            var leadingZeroS:String = ""; //how many leading 0's to put in front of the seconds
            var leadingZeroM:String = "";
            var time = getTimer() - startTime; //this gets the amount of miliseconds elapsed
            var seconds = Math.floor((time / 1000) % 60); //this gets the amount of seconds

            if (seconds < 10) { //if seconds are less than two digits, add the leading zero
                leadingZeroS = "0";
            }       
            if (seconds < 600) { //if seconds are less than two digits, add the leading zero
                leadingZeroM = "0";
            }       
            var minutes = Math.floor( (time / (60 * 1000) ) ); //60 seconds times 1000 miliseocnds gets the minutes
            return leadingZeroM + minutes + ":" + leadingZeroS + seconds;
        }
        public function resetTimer(event:TimerEvent):void
        {
            var timer:Timer = event.target as Timer;
            timer.reset();
            timer.start();
        }
        function getTimePassed(startTime:int):Number
        {
            return (getTimer() - startTime) /1000;
        }

我无法成功将它从 30 秒改为倒计时。

我试图在以下声明计时器:timer = new Timer(1000, 30); 并更改 var time = 30 - getTimer(); 而不是 var time = getTimer() - startTime; 但它不起作用。

你有想法吗?谢谢!

【问题讨论】:

    标签: actionscript-3 flash timer countdown


    【解决方案1】:

    要创建倒计时,您可以像这样使用Timer.currentCount

    var time:int = 0;
    var timer:Timer = new Timer(1000, 30)
        timer.addEventListener(TimerEvent.TIMER, onTimer);
        function onTimer(e:TimerEvent):void {
            time = timer.repeatCount - timer.currentCount;
            trace('00:' + (time < 10 ? '0' + time : time)); // gives : 00:29, 00:28, .., 00:01, 00:00
        }
        timer.start();
    
    trace('00:' + (timer.repeatCount - time));              //  gives : 00:30
    

    希望能有所帮助。

    【讨论】:

    • 谢谢,我已经弄好了,但是用同样的方法,是正确的。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多