Corona Попытка удалить объект, который уже был удален

Я работаю над простой игрой «прорыв», и у меня проблема с перезагрузкой файла map. например: если я начну с уровня 1, сломаю несколько кирпичей и проиграю, то я снова загружаю ту же карту. В следующий раз, когда мяч столкнется с тем же кирпичом, которого я "трогал" раньше, я выдаст ошибку 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
        ...

person Bnhjhvbq7    schedule 26.06.2013    source источник
comment
Пожалуйста, напишите, в какой строке кода вы получаете эту ошибку.   -  person vovahost    schedule 27.06.2013


Ответы (3)


я думаю, что во второй раз, когда вы заходите в свою игру, событие. другое не создается, вы используете раскадровку, если так, вы можете попытаться удалить сцену после окончания игры, поэтому, когда вы снова заходите в свою игру, он воссоздает весь объект

person DevfaR    schedule 27.06.2013

Вы пробовали это?

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

Если вы используете физику, вам также необходимо выполнить physics.removeBody(brick) перед удалением самого объекта, чтобы он отсоединился от физического движка. Если не физика думает, что она все еще там.

person Rob Miracle    schedule 01.07.2013