为计时器/计数器增加时间

时间:2011-11-28 13:48:35

标签: flash actionscript-3 timer

我看了整个网络,每个人都可以教你如何为你的游戏或倒计时制作计时器,但我似乎无法找到如何为已经计数的计时器增加时间。

所以这是我的反击班:

package 
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.text.TextField;
import flash.events.Event;
import flash.utils.Timer;
import flash.events.TimerEvent;

public class Score extends MovieClip
{
        public var second:Number = 0;
        public var timer:Timer = new Timer(100);
        private var stageRef:Stage;

        public function Score(stageRef:Stage)
        {
            x = 560.95;
            y = 31.35;
            this.stageRef = stageRef;

            timer.addEventListener(TimerEvent.TIMER, scoreTimer);
            timer.start();
        }

        public function scoreTimer(evt:TimerEvent):void
        {
            second += 1;
            scoreDisplay.text = String("Score: " +second);
        }

这没有任何问题或问题,只是以100毫秒的速度向上计数,我想知道的是如果我的游戏中发生了某些事情,例如你杀死一个敌人,那么如何添加说30秒。

请帮忙!

2 个答案:

答案 0 :(得分:2)

这可以像调用更新second属性的方法一样简单。你的方法最终会看起来像这样。

public function scoreTimer(evt:TimerEvent):void
{

    second += 1;
    updateDisplay();
}

public function addPenalty(penalty:Number):void
{

    second += penalty;
    updateDisplay();
}

private function updateDisplay()  : void
{

    scoreDisplay.text = String("Score: " +second);
}

由于您未使用timer的值来更新显示,因此重置或延迟不会调整您的scoreDisplay。相反,它将继续计算停止的位置,因为在这些操作期间second属性本身不会重置。

答案 1 :(得分:0)

我认为Timer.delay可以用于Timer.delay = time_remaining + 30000,例如time_remaining,可以为计时器增加30秒。当然,这意味着您必须知道{{1}}

  

如果在定时器运行时设置延迟间隔,则定时器   将在相同的repeatCount迭代中重新启动。

引自此处:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html#delay