Actionscript 3 如何将计时器增加为3
嘿,每个人都不能真正找出解决这个问题的最简单方法 基本上,我有一个计时器,在游戏开始时启动,如下所示:Actionscript 3 如何将计时器增加为3,actionscript-3,timer,Actionscript 3,Timer,嘿,每个人都不能真正找出解决这个问题的最简单方法 基本上,我有一个计时器,在游戏开始时启动,如下所示: //Create new timer object tEggTimer = new Timer (nTimerSpeed); //Listen for timer intervals tEggTimer.addEventListener(TimerEvent.TIMER, addEggs, false, 0, true); //s
//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();
但这只会完全停止计时器
如何正确减少计时器
谢谢大家。也许不是最好的方法,但是使用nTimerSpeed,让它每毫秒运行一次:
tEggTimer = new Timer (1);
然后在AddEggs函数中使用nTimerSpeed和一个计数器变量。计数器初始化为0。在if语句中使用所有逻辑时,每次通过函数递增计数器。如果计数器等于nTimerSpeed,则在if语句和重置计数器中允许它们
function AddEggs()
{
if(counter == nTimerSpeed)
{
//adding eggs logic
counter = 0;
}
counter++;
}
您是否尝试在500毫秒版本重新实例化之前说:
tEggTimer.stop()
?我猜你的第一个计时器实例将在新实例启动时继续启动,除非你故意停止它 如果您只想更改计时器速度,同时保持所有其他内容不变,则可以只更改计时器对象中的延迟属性
此处示例:
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);
import flash.utils.getTimer;
导入flash.utils.Timer;
导入flash.events.TimerEvent;
导入flash.events.MouseEvent;
var速度:矢量新的[100020005000];
无功电流速度:int=0;
var定时器:定时器=新定时器(速度[当前速度]);
函数timerTick(inputEvent:TimerEvent):无效{
跟踪(“计时器滴答:+getTimer());
}
timer.addEventListener(TimerEvent.timer,timerTick,false,0,true);
timer.start();
函数clickedStage(inputEvent:MouseeEvent):无效{
currentSpeed=++currentSpeed%speeds.length;
timer.delay=速度[当前速度];
跟踪(“定时器延迟设置为”+定时器延迟);
}
this.stage.addEventListener(MouseEvent.CLICK,clickedStage,false,0,true);
点击阶段将改变计时器延迟,从1秒、2秒、5秒和循环。我只是使用getTimer()来显示计时器的运行速度
请注意,从输出来看,每次更改值时,计时器都会自动重新启动。Hmm不完全确定如何实现这一点。我试着让你知道不,我没有。我曾经尝试过的是:tEggTimer=newtimer(500);tEggTimer.reset();tEggTimer.start();请尝试我的建议,并让我知道它是如何进行的。是的,我尝试了,但我没有得到任何消息。我更新我的帖子可能会有助于了解更多细节。我得到以下错误:隐式强制类型flash的值。utils:Timer到一个不相关的类型类。它是否说明它在哪一行?试着把它放到一个空白的新fla中(我假设你使用的是flash ide)。嗯,在一个新fla中它似乎工作得很好。也许我做错了什么,我会再试一次,我不知道=但是在我的例子中,设置timer.delay(或者代码中的tEggTimer.delay)才是最关键的部分。所以我在前面给出了它,现在没有错误了。但它似乎不能正常工作。我能做到这一点吗。因为我想让计时器的滴答声更快[1000800500]?我希望它从1000开始,然后在If语句中激活时,将其减少到800,如我的示例所示
timer.reset();
timer.delay = 2000;
timer.start();