Проблема в том, что прослушиватель входящего кадра будет вызываться снова и снова. Первый раз, когда он называется DisplayObject, действительно будет дочерним для вызывающего, но после этого он не будет (так как он уже был удален).
Поэтому я предлагаю вам сделать:
var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);
function removeSquare(evt:Event):void {
if (contains(square)) {
removeChild(square)
}
}
либо проверьте, действительно ли квадрат является потомком this
var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);
function removeSquare(evt:Event):void {
removeEventListener(Event.ENTER_FRAME, removeSquare)
removeChild(square)
}
или удалите прослушиватель событий, в зависимости от того, нужно ли вам событие для чего-то другого, кроме удаления квадрата. Также вы должны заметить, что вы, вероятно, вообще не увидите квадрат, так как он будет удален довольно быстро после добавления.