Corona“尝试删除已被删除的对象”

时间:2013-06-26 16:37:16

标签: sdk lua corona lime

我正在制作一个简单的“突破”游戏,我在重新加载map时遇到了问题。 例如:如果我从level1开始,打破一些砖并输掉,而不是我再次加载相同的地图。下次球碰到我之前“碰过”的同一块砖时,会给我一个错误Attempt to remove an object that has already been removed

local map = lime.loadMap("maps/" .. currentLevel .. ".tmx")
local layer = map:getTileLayer("bricks_1")
local visual = lime.createVisual(map)
local physical = lime.buildPhysical(map)


function removeBricks(event)
    if event.other.isBrick then
        local brick = event.other
        transition.to(brick, {time = 20, alpha = 0})

        score = score + brick.scoreValue
        ScoreNum.text = score 

        -- remove brick
        brick:removeSelf()
        brick = nil
        ...

3 个答案:

答案 0 :(得分:0)

你试试这个吗?

transition.to(brick, {time = 20, alpha = 0, onComplete = function()
    if brick then
        brick:removeSelf()
        brick = nil
    end
end})

答案 1 :(得分:0)

我认为第二次你去游戏时没有创建event.other你是否使用了故事板如果这样你可以尝试在游戏结束后删除场景,所以当你再次进入你的游戏时它将重新创建所有游戏对象

答案 2 :(得分:0)

如果您正在使用物理,则在移除对象本身之前还必须执行physics.removeBody(brick),以便它与物理引擎分离。如果不是物理学认为它仍然存在。