我看了整个网络,每个人都可以教你如何为你的游戏或倒计时制作计时器,但我似乎无法找到如何为已经计数的计时器增加时间。
所以这是我的反击班:
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秒。
请帮忙!
答案 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