嘿大家所以我有一个倒数计时器,我已经设法在我的游戏中实现,我在一些论坛上看到。现在我设置了一个新功能,只要用户Hittest使用Movie Clip就可以为计时器添加一些秒,但它似乎无法正常处理我得到的错误,而它确实增加了更多时间,它是并没有真正添加它,因为当我确实添加更多时间并说计时器倒计时到10时,取决于我在Hittest中添加多少秒,游戏以10而不是0秒结束。所以我不认为它实际上在内部改变了时间间隔。
此外,当我重新开始游戏时,它会显示过去一秒钟的时间,然后一旦开始倒计时,它最终会重置并开始正常倒计时。
以下是我设置的方法:
我的构造函数中的初始化变量:
count = 30; //Count down from 60
myTimer = new Timer(1000, count);// Timer intervall in ms
myTimer.addEventListener(TimerEvent.TIMER, countdown);//EventListener for intervalls
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, countdownComplete);
myTimer.start();//start Timer
countDown函数:
private function countdown(e:TimerEvent):void
{
//Display Time in a textfield on stage
countDownTextField.text = String((count)- myTimer.currentCount);
updateCountdownTimer();
}
在我的HitTest功能中:
private function onPopIsClicked(pop:DisplayObject):void
{
nScore ++;
updateHighScore();
updateCurrentScore();
//Add Explosion Effect
popExplode = new mcPopExplode();
stage.addChild(popExplode);
popExplode.y = mPop.y;
popExplode.x = mPop.x;
elapsedTime += 5;
updateCountdownTimer();
}
然后最后在我的updateCountdownTimer()中:
public function updateCountdownTimer():void
{
countDownTextField.text = String((count)- myTimer.currentCount + elapsedTime);
}
你能明白为什么我不能正确地为计时器增加秒数吗?
提前致谢。
** * * 更新 * ** < EM> * **
count = 10; //Count down from 10
myTimer = new Timer(1000, count);// Timer intervall in ms
updateCountdownTimer();
myTimer.addEventListener(TimerEvent.TIMER, countdown);//EventListener for intervalls
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, countdownComplete);
myTimer.start();//start Timer
private function countdown(e:TimerEvent):void
{
//Display Time in a textfield on stage
updateCountdownTimer();
}
private function onPopIsClicked(pop:DisplayObject):void
{
elapsedTime += 2;
myTimer.repeatCount += elapsedTime; //add time to the timer
count += elapsedTime;
updateCountdownTimer();
trace("pop clicked and time");
}
public function updateCountdownTimer():void
{
countDownTextField.text = String((count)- myTimer.currentCount);
}
答案 0 :(得分:1)
因此,为Timer
添加时间的解决方案是调整repeatCount
属性。您可以在onPopIsClicked()
:
private function onPopIsClicked(pop:DisplayObject):void
{
nScore ++;
updateHighScore();
updateCurrentScore();
//Add Explosion Effect
popExplode = new mcPopExplode();
stage.addChild(popExplode);
popExplode.y = mPop.y;
popExplode.x = mPop.x;
elapsedTime += 5;
myTimer.repeatCount += 5; //add time to the timer
updateCountdownTimer();
}
因此,您需要更改显示倒计时的方式,因为我们正在增加repeatCount
属性。您的myTimer.currentCount
可能会超出count
变量的大小,会发生什么情况。因此,在onPopIsClicked()
增加elapsedTime
之后添加此行:
elapsedTime += 5;
myTimer.repeatCount += 5;
count += 5//this line, increment the count total
如果需要,您还可以将变量设置为递增:
var increaseBy:int = 5
然后你将使用repeatCount,count和elapsedTime(如果你还需要它):
elapsedTime += increaseBy;
myTimer.repeatCount += increaseBy;
count += increaseBy;
你真的不需要elapsedTime
,除非你将它用于别的东西。然后你更新了你的文字,没有必要添加elapsedTime
所以它看起来像:
countDownTextField.text = String(count- myTimer.currentCount);