删除一个函数的self对象 [Corona SDK]

我有一个小问题,正在寻找一个简单的解决方案, 在我的游戏中,如果子弹触碰到特定的敌人,则应删除该目标并在其他位置重生, 我使用自我碰撞事件使指令适用于每个敌人, 问题是自我碰撞函数仅在识别目标时起作用,但由于我在碰撞函数中第一次删除它,在我的函数中,该敌人不再存在。它仅在第一次有效。 我希望我的问题可以理解, 这是代码示例:

点赞
用户1366533
用户1366533

你只为第一个敌人对象执行 addEventListener(),在碰撞后,你会获得一个全新的敌人对象,需要为其设置碰撞侦听器。

local onCollision -- 声明先有 onCollision() 函数,以便我们可以从 addEnemy() 中使用它
local enemy

local function addEnemy()
    enemy = display.newRect(0,0, 20, 50)

    -- 新对象,需要再次分配碰撞侦听器
    enemy.collision = onCollision
    enemy:addEventListener( "collision", enemy )

    transition.to( enemy, {time = 2000, x = 240, y = 160} )
end

local function onCollision(self,event)
    display.remove( bullet )
    display.remove( enemy )

    addEnemy()
end

-- 添加第一个敌人...
addEnemy()
2014-01-28 09:47:26