【问题标题】:Corona "Attempt to remove an object that has already been removed"电晕“尝试移除已移除的对象”
【发布时间】:2013-06-26 16:37:15
【问题描述】:

我正在开发一个简单的“突围”游戏,但在重新加载 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
        ...

【问题讨论】:

  • 请写在你得到那个错误的那一行代码上。

标签: sdk lua coronasdk lime


【解决方案1】:

我认为您第二次进入游戏时 event.other 没有创建,如果您使用情节提要,那么您可以尝试在游戏结束后删除场景,这样当您再次进入游戏时,它将重新创建所有对象

【讨论】:

    【解决方案2】:

    你试过了吗?

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-19
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-08
        相关资源
        最近更新 更多