如何增加计时器AS3?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

基本上我有一个在游戏开始时启动的计时器,如下所示:

//Create new timer object
        tEggTimer = new Timer (nTimerSpeed);
        //Listen for timer intervals
        tEggTimer.addEventListener(TimerEvent.TIMER, addEggs, false, 0, true);
        //start timer
        tEggTimer.start();

nTimerSpeed等于(800);

然后我像这样添加:

private function addEggs(e:TimerEvent):void 
    {
        //var eggGlobalPosition:Point = _Egg.localToGlobal(new Point(_Bunny.x, _Bunny.y));

        _Egg = new mcEgg();
        stage.addChild(_Egg);
        _Egg.x = _Bunny.x;
        _Egg.y = _Bunny.y + 30;
        aEggArray.push(_Egg);
        trace(aEggArray.length);

    }

所以在另一个输入框架函数中我想将计时器的值更改为(500),但每当我尝试这样时:

tEggTimer = new timer(500);

tEggTimer.start();

像这样:

private function updateDifficulty():void 
    {
        if (difficultyUpdate) return;

        if (nScore >= 2)
        { 
            tEggTimer.removeEventListener(TimerEvent.TIMER, addEggs);
            tEggTimer.stop();
            tEggTimer = new Timer(200);
            tEggTimer.addEventListener(TimerEvent.TIMER, addEggs);
            tEggTimer.start();

但这并没有做任何事情,只能完全停止计时器。

我该怎么做才能正确减少计时器?

提问于
用户回答回答于

如果您只想更改计时器速度,同时保持其他一切不变,则只需更改Timer对象中的Delay属性即可。

像这样:

import flash.utils.getTimer;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.MouseEvent;

var speeds:Vector.<int> = new <int>[1000, 2000, 5000];
var currentSpeed:int = 0;

var timer:Timer = new Timer(speeds[currentSpeed]);
function timerTick(inputEvent:TimerEvent):void {
    trace("Timer ticking: "+ getTimer());
}
timer.addEventListener(TimerEvent.TIMER, timerTick, false, 0, true);
timer.start();


function clickedStage(inputEvent:MouseEvent):void {
    currentSpeed = ++currentSpeed % speeds.length;
    timer.delay = speeds[currentSpeed];
    trace("Timer delay set to "+ timer.delay);
}
this.stage.addEventListener(MouseEvent.CLICK, clickedStage, false, 0, true);
用户回答回答于

也许不是最好的方法,但是使用nTimerSpeedure,让它运行到每毫秒:

tEggTimer = new Timer (1);

然后在AddEggs函数中使用nTimerSpeedandCounter Variable.Counter初始化为0。如果你所有的逻辑都在一个if语句中,每次通过函数增加计数器。如果计数器等于nTimerSpeer,允许它们在if语句和重置计数器内。

function AddEggs()
{
   if(counter == nTimerSpeed)
   {
       //adding eggs logic
       counter = 0;
   }
   counter++;
}

所属标签

可能回答问题的人

  • 最爱开车啦

    8 粉丝503 提问6 回答
  • 优惠活动秘书

    0 粉丝2 提问6 回答
  • uncle_light

    5 粉丝518 提问5 回答
  • Richel

    6 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券