четверг, 14 июня 2012 г.

Corona SDK - error "Attept to remove ..."


При разработке столкнулся со следующей ошибкой:
ERROR: Attept to remove an object that's already been removed from the stage or whose paret/ancestor group has already been removed.
Смысл ошибки понятен (попытка удалить объект, который уже был удален ранее), но я потратил более получаса, чтобы обнаружить причины.

В моем коде удаление объекта пули могло быть вызвано из двух мест.

  1. Когда пуля выходит за пределы экрана
  2. Когда пуля сталкивается с препятствием

Изначально код выглядел так:
Причина ошибки - это одновременное наступление двух событий.

Как это обычно бывает, не хватало одной строчки, которая и решила проблему:
Но я пошел дальше и решил добавить объекту флаг destroyed, который говорит о необходимости удалить объект.