2015-05-13 71 views
1

我有幾個關於事件監聽器的問題。請回答清楚。removeEventListener的重要性? AS3

  1. 我們每次做addEventListener時總是需要removeEventListener嗎?
  2. 從舞臺上移除一個物體時,它是否也移除了它的事件監聽器? 例如,假設我有一個帶有如下所示的事件監聽器的文本框。

    txtField1.addEventListener(Event.CHANGE,F_onCHange_TxtField);

我有一個代碼,從舞臺 我的問題刪除文本框是這樣的:在刪除文本字段,它也會自動刪除該事件監聽?

  1. 當刪除eventListeners時,它有助於提升性能還是其他的東西?

回答

3

這是我的答案,讓我知道如果您有任何問題!

  1. 那麼,不完全是。但是,如果對象上有一個活動的事件偵聽器,它將永遠不會被垃圾收集。最好是明確地刪除事件監聽器,但至少使用這樣的弱監聽器:

    myThing.addEventListener(Event.Complete,Handler,false,0,true);

最後一個參數是什麼使它變弱。

  1. 不,這是回到你的第一個問題。對象從舞臺上移除後,它仍然存在於內存中。如果你有一個強大的事件監聽器,它將保持在那裏。如果你把它放回舞臺上,它仍然會響應它正在收聽的任何事件。

  2. 刪除事件偵聽器有更多的是與資源管理,但如果你在那裏你經常創建新的對象和創建事件監聽器有一個實例,你肯定會想,以確保清除它們,以防止持有到所有這些對象在您的應用程序的生命週期中。

我希望這有助於!格蘭特斯金納在這方面有一些很棒的文章,我強烈建議你檢查一下。 Start Here!

+1

我剛剛閱讀文章。謝謝,我從中學到了很多東西。根據文章,它也表示我也需要刪除所有參考。這變得越來越複雜..你想給我點如何優化我的閃光。我希望我的項目能夠順利運行,並且不佔用大量CPU使用量。 – Darvlaskie

+0

哦,這是一個非常廣泛的請求。你可能會有一天在你的谷歌搜索。我學習的方式是通過製作東西。讓自己成爲一個FPS計數器(http://www.flashandmath.com/howtos/memory/)並開始製作東西,看看什麼可行,哪些不行。一旦你有了一些代碼,提供指針比想我的頭頂上的東西容易得多。 – onekidney