2010-12-14 100 views
0

嗨,我是新來的AS3,我想知道什麼是最好的方式來刪除一個孩子在一個點。 我試圖Actionscript 3刪除點

Holder.removeChild(Holder.getObjectsUnderPoint(new Point(exampleX, exampleY))[0]); 

但是,這種回引發ArgumentError:錯誤#2025:提供的DisplayObject必須是調用者的子。

有什麼建議嗎?

回答

0

的getObjectsUnderPoint()方法返回的DisplayObject,可能不一定是你的持有對象的直接孩子的陣列,它們可能是孫子還是盛大隆重的孩子等等

你可以設置條件像這樣的:

var objects:Array = Holder.getObjectsUnderPoint(yourPoint); 
for each(var child:DisplayObject in objects) 
{ 
    if(child.parent == Holder) 
     Holder.removeChild(child) ; 
} 

Holder.contains沒有過濾嘴的,因爲它會返回孫子以及...我的錯!

+0

好的試了一下。它通過Holder.contains(),但是當它試圖刪除它時仍會拋出相同的錯誤。奇怪的呵呵 – Dain 2010-12-14 07:15:26

+0

剛剛意識到我錯過了一個圓括號:(你是否嘗試過這樣的代碼,或者你是否修改了它? – PatrickS 2010-12-14 07:55:31

+0

是的,我選擇了它並添加它,我決定檢查對象數組中的父對象,它給了我的對象類型,而不是持有者:S。無論如何,我最終使用mattias醜陋的代碼解決方案 – Dain 2010-12-14 09:23:00

0

我不知道爲什麼帕特里克版本不起作用。這是一個使用剪輯父級的替代(醜陋代碼)解決方案。

var clips : Array = _container.getObjectsUnderPoint(_point); 

for each(var clip : DisplayObject in clips) 
{ 
    clip.parent.removeChild(clip); 
} 
+0

它可能很醜,但它似乎工作,謝謝! – Dain 2010-12-14 09:27:29

相關問題