2010-05-10 71 views
3

我是一個新手,我已經在這方面進行了數週的嘗試,並且我無法控制這一點。下面的簡單代碼給出了「提供的DisplayObject必須是調用者的子代」錯誤。提供的DisplayObject必須是調用者的孩子

var square = new squareObj; 
addChild(square); 
addEventListener(Event.ENTER_FRAME, removeSquare); 

function removeSquare(evt:Event):void { 
    removeChild(square) 
} 

squareObj是導出爲AS的庫中的動畫片段。如何修改這段代碼以使其正常工作? 我想這是我的知識,我正在缺乏適當的oop,所以任何有關此問題的好教程的鏈接都會很感激。

問候H

回答

6

問題是輸入幀偵聽器將被一遍又一遍地調用。第一次它被稱爲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) 
} 

兒童或刪除事件偵聽器,這取決於你是否需要事件除了去除方塊以外的東西。另外你應該注意到,你可能根本看不到這個方塊,因爲它在被添加後會很快被移除。

相關問題