Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer Corona sdk无法在单个生成的对象上停止计时器_Timer_Lua_Coronasdk - Fatal编程技术网

Timer Corona sdk无法在单个生成的对象上停止计时器

Timer Corona sdk无法在单个生成的对象上停止计时器,timer,lua,coronasdk,Timer,Lua,Coronasdk,我有一个击败他们的游戏,如果敌人与我的角色发生碰撞,定时器会发出“打人”的声音,如下所示: local function hitSound() local hsound = math.random(#sfx.hit) audio.play(sfx.hit[hsound]) end --------------------------------------------------字符碰撞--------------- 当我的角色一次只击倒一个敌人时,这很好,但是如果有多个繁殖的敌人(通常是这样

我有一个击败他们的游戏,如果敌人与我的角色发生碰撞,定时器会发出“打人”的声音,如下所示:

local function hitSound()
local hsound = math.random(#sfx.hit)
audio.play(sfx.hit[hsound])
end
--------------------------------------------------字符碰撞---------------

当我的角色一次只击倒一个敌人时,这很好,但是如果有多个繁殖的敌人(通常是这样)在我杀死他们时与我的角色战斗,那么打孔声仍然存在。 另外,当我调用audio.fadeout()时,当我的角色死亡时,打孔声音不会随着其他声音/音乐消失:s

有人建议我使用表中的索引将计时器分配给特定的敌人,但我不确定如何做。。。这是最好的方式吗?我只是不知道如何获取敌人当前的索引。。非常感谢任何帮助

这是我的敌人产卵代码:

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来绕过它


Rob

谢谢Rob,自拍器不起作用,因为碰撞发生在主角身上,而不是敌人身上。我使用event.other.timer和timer.cancel(event.other.timer)使它工作。我现在遇到的问题是,当我的角色死亡,音频消失时,被称为“冲孔不消失”。我试过设置enemy1.timer=nil和timer.cancel(enemy1)(发生错误),但它仍然可以播放,当我暂停游戏和音频时也是如此。暂停被称为打孔。没有暂停,我已经将主音量设置为零,但当我的角色死亡时,这是不可行的。。有什么建议吗?顺便说一下,当我的角色死亡时,我会停止敌人的繁殖,所以新的冲突不是问题
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