Обновление:
Как указал Рой в комментариях, потому что события (включая Event.REMOVED) всплывают , затем просто добавляется прослушиватель событий для события REMOVEDдо DisplayObjectContainer
достаточно;он вызывается, когда любые дочерние объекты удаляются из контейнера (даже если это происходит из-за того, что объект был добавлен в другой контейнер).
Свойство target
события будет дочерним объектом, который удаляется, иcurrentTarget
всегда будет сам контейнер.
Обратите внимание, что это событие также будет запускаться, если весь контейнер удален из его контейнера;простой if (e.target == e.currentTarget) return;
должен обрабатывать этот случай.
Оригинальный ответ ниже:
Вы можете добавить прослушиватель событий для Event.REMOVED
события для каждого DisplayObject
, которое добавляется к вашему DisplayObjectContainer
.Затем сам объект скажет вам, что он был удален, вместо того, чтобы полагаться на DisplayObjectContainer
для уведомлений.
Если это также не срабатывает при перемещении объекта из одного контейнера в другой, тоВ качестве обходного пути вы также можете прослушать событие ADDED и проверить, находится ли экранный объект в вашем контейнере во время его запуска.
Не забудьте удалить прослушиватели событий после удаления объекта из вашего контейнера,в противном случае возможны утечки памяти, многократные вызовы прослушивателей событий для одного и того же объекта и т. д.