2011-12-24 120 views
-1

我有一个计时器和一个显示时间的动态文本框。 每次我的电影剪辑遇到敌人时,我都希望计时器增加4秒。到目前的计数。 我想知道这是为什么不工作:AS3如何在hittest后添加秒(游戏)定时器?

timer.currentCount + 4; 

(什么都不做)

timer.currentCount += 4; 

(错误:属性为只读)

我是在正确的方向无论如何,我应该改变什么?

回答

2

正如另一个答案所述,你不能调整你的计时器的经过时间。你可以尝试做的是创建一个单独的变量,每次timer勾选您将此变量添加1时,都会调用var elapsedTime:Number;。当击中测试发生时,您可以简单地将4添加到它。

因为您正在使用var来“操纵”您不再需要使用currentCount的时间。只需在更新功能中参考elapsedTime,您就会安然无恙。

它会是这样的:

var timer:Timer = new Timer(1000); 
var elapsedTime:Number = 0; 

timer.addEventListener(TimerEvent.TIMER, onTimerTick); 

function onTimerTick(e:TimerEvent) : void 
{ 
    elapsedTime++; 
    updateTimerTxt(); 
} 

function onHitTest() : void 
{ 
    elapsedTime += 4; 
    updateTimerTxt(); 
} 

function updateTimerTxt() : void 
{ 
    timertxt.text = String(elapsedTime); 
} 
+0

谢谢你的回答,我明白了,你知道如何将经过的时间链接到动态文本字段:timertxt.text = String(timer.currentCount)+ elapsedTime; ? – Opoe 2011-12-24 16:03:43

+1

@Opoe这是一个不同的问题。我已经找到了你的原始问题的答案,然后将其标记为正确。 – 2011-12-24 21:57:12

+0

@AdamHarte我明白你为什么这么说,但它与我的问题有关,因为我使用动态文本框来显示计时器。 – Opoe 2011-12-24 22:47:15

0

财产currentCount是只读。您无法修改计时器的已用时间。如果你需要修改计时器,那么你可以停下来,并修改间隔时间来创建一个新计时器。

+0

谢谢您的回答。所以当你想增加或减少定时器秒数时,你必须创建一个新的定时器? – Opoe 2011-12-24 13:59:13

+0

永远不能修改现有定时器的已用时间。您是否需要创建一个新的取决于您的代码的整体设计。根据您的需求和代码结构,可能还有其他方法。 – taskinoor 2011-12-24 14:42:47