2010-10-28 77 views
0

是否有快速有效的方式從我的應用中刪除所有兒童監聽者等。如果一切都包含在名爲View的舞臺上的顯示對象中?我有很多動態調用的孩子和他們的聽衆不要讓我刪除它們所在的視圖中刪除。AS3快速高效地去除兒童和聽衆並丟棄父母

public function _discard():void 
    { 
     // Quick way to discard the view, remove children and listeners 
     removeChild(View); 
     View = null; 
    } 

這是消除家長和孩子們的一個有效方法是什麼?

回答

2

如果您使用弱引用的偵聽器,那麼偵聽器不會阻止對象在您取消它們時被垃圾收集。

useWeakReference是addEventListener調用中的第5個參數。

+0

表示他們不會在默認情況下變弱。 – woodscreative 2010-10-28 22:21:18

+1

是的。這裏有一些關於這方面的討論: http://stackoverflow.com/questions/1891869/why-does-as3-not-use-weak-references-by-default-in-event-listeners – Cadin 2010-10-28 22:49:11

+0

addEventListener上的文檔正在談論聽衆作爲功能,而不是包含它們的對象。看來這個參數只與匿名函數有關,這些匿名函數會被垃圾收集(如果我錯了,請糾正我)。 – alxx 2010-10-29 07:10:48

2

AFAIK,沒有辦法在ActionScript中枚舉偵聽器。所以你必須寫清理代碼,removeEventListener調用對稱到addEventListener

0

alxx是對的。解決這個問題並不容易。爲了避免手動刪除所有的孩子/聽衆,我會創建一個幫助方法,它會收到一個View並遞歸刪除所有孩子及其各自的聽衆。