2013-06-26 3 views
0

Я работаю над простой «прорывной» игрой, и у меня есть проблема с перезагрузкой map. например: если я начинаю с уровня 1, разорвать некоторые кирпичи и проиграть, то я снова загружу ту же карту. в следующий раз, попадающий шар с тем же кирпичом я «прикоснулся» перед тем, даст мне ошибку Attempt to remove an object that has already been removedCorona «Попытка удалить объект, который уже удален»

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 
     ... 
+0

Пожалуйста, напишите на этой строке кода, что вы получите эту ошибку. – vovahost

ответ

0

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

0

Вы попробовать это?

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

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

Смежные вопросы