嘿,每个人都不能真正想出解决这个问题的最简单的方法。
基本上,我有一个计时器,在游戏开始时启动,如下所示:
//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);
}
因此,在另一个enter frame函数中,我想将计时器的值更改为(500),但每当我尝试这样做时:
tEggTimer =新定时器(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();
但这不会做任何事情,只是完全停止计时器。
我该怎么做才能正确地减少计时器?
谢谢你们。
发布于 2014-04-06 18:46:56
如果您只想更改计时器速度,同时保持其他所有内容不变,则只需更改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);
单击舞台将更改计时器延迟,从1秒、2秒、5秒和周期。我只是使用getTimer()来显示计时器的计时速率。
请注意,从输出来看,每次更改该值时,计时器都会自动重新启动。
发布于 2018-06-19 04:42:18
timer.reset();
timer.delay = 2000;
timer.start();
发布于 2014-04-06 13:38:29
也许不是最好的方法,但是,使用nTimerSpeed,让它每毫秒运行一次:
tEggTimer = new Timer (1);
然后在您的AddEggs函数中使用nTimerSpeed和一个计数器变量。计数器被初始化为0。将你所有的逻辑放在一个if语句中,每次通过函数递增计数器。如果counter等于nTimerSpeed,则允许在if语句中使用它们并重置计数器。
function AddEggs()
{
if(counter == nTimerSpeed)
{
//adding eggs logic
counter = 0;
}
counter++;
}
https://stackoverflow.com/questions/22889484
复制相似问题