簡體   English   中英

電暈sdk無法在單個生成的對象上停止計時器

[英]Corona sdk having trouble stopping timers on individual spawned objects

我有一個節拍游戲,如果敵人與我的角色發生碰撞,計時器上會播放“打孔”聲音,如下所示:

local function hitSound()
local hsound = math.random(#sfx.hit)
audio.play(sfx.hit[hsound])
end

--------------------------------------------------角色沖突---------------

local function guyCollision(self, event)
if event.other.type == "enemy1"then

if event.phase == "began" then
hitTimer = timer.performWithDelay(500,hitSound,0)
event.other:setSequence("punch")
event.other:play()
end

if event.phase == "ended" then
timer.pause(hitTimer)
end

當我的角色一次只擊落一個敵人,但是當我殺死他們時,如果有多個生成的敵人(通常有)與我的角色戰斗時,這種方法效果很好。 另外,當我的角色死亡時,當我調用audio.fadeout()時,打孔聲音不會隨着其他聲音/音樂而消失:

有人建議我使用其表中的索引將計時器分配給有問題的特定敵人,但不確定如何執行此操作……這是最好的方法嗎? 我只是不知道如何獲取敵人的當前索引..任何幫助,不勝感激!

這是我的敵人生成代碼:

local spawnTable2 = {}


local function spawnEnemy()
enemy1 = display.newSprite( group, sheetE, sequenceData2 )
enemy1.x=math.random(100,1300)
enemy1.y=math.random(360,760)
enemy1.gravityScale = 0
enemy1:play()
enemy1.type="coin"
enemy1.objTable = spawnTable2
enemy1.index = #enemy1.objTable + 1
enemy1.myName = "enemy" .. enemy1.index
physics.addBody( enemy1, "kinematic",{ density = 1.0, friction = 0.3, bounce = 0.2 })
enemy1.isFixedRotation = true
enemy1.type = "enemy1"
enemy1.enterFrame = moveEnemy
Runtime:addEventListener("enterFrame",enemy1)
enemy1.objTable[enemy1.index] = enemy1
return enemy1
end

我認為您的問題是您的hitTimer變量可能已被覆蓋,您只能取消最后一個變量。 您可能可以做:self.hitTimer可以解決它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM