删除函数的自身对象[corona sdk]

时间:2014-01-24 15:10:31

标签: lua corona

我有一点问题,我正在寻找一个简单的解决方案,
在我的游戏中,如果子弹触及特定的敌人,则应删除此目标并在其他地方重新生成,
我正在使用自碰撞事件来指示每个敌人的指令,
问题是自碰撞功能只有在他识别目标时才有效,但是当我第一次在碰撞功能中删除它时,我的功能不再存在这个敌人。它只是第一次工作。
我希望我的问题是可以理解的,

这是代码的一个例子:

local ennemy
ennemy = display.newRect(0,0, 20, 50)
transition.to( ennemy, {time = 2000, x = 240, y = 160} )

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

    ennemy = display.newRect(0,0, 20, 50)
    transition.to( ennemy, {time = 2000, x = 240, y = 160} )
end

ennemy.collision = onCollision
ennemy:addEventListener( "collision", ennemy )

1 个答案:

答案 0 :(得分:1)

你只对第一个敌人对象做addEventListener(),在碰撞后你有一个全新的敌人对象,它也需要设置碰撞监听器。

local onCollision -- forward declare onCollision() so we can use it from addEnemy()
local enemy

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

    -- new object so need to assign collision listener again
    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

-- Add first enemy…
addEnemy()