Re: [問題] addEventListener 隱含function的寫法
※ 引述《hirabbitt (兔子)》之銘言:
: addEventListener(事件, new function(E:事件):viod{
: //要做的事
: });
這種寫法會遇到的事情
就是如果沒有保留function的reference
未來就無法remove event listener
於是這個Function物件就會成為記憶體上面的orphan
以至於需要釋放記憶體的時候,GC不會將其清除
另外,enterFrame和timer這種clock性質的事件
會持續觸發這個function直到程式結束,因為你沒有保存reference
所以用這種寫法的時候,最好保存refernece
var f:Function;
addEventListener(Event.ENTER_FRAME, f = function(e:event):void {
trace("test");
}
未來才有辦法將其移除,讓GC可以釋放記憶體
removeEventListener(Event.ENTER_FRAME, f);
還有這種寫法最好不要寫在迴圈裡面
因為每一次迴圈都會製造一個新物件
最好就是使用你說的第二種方法
把一樣的功能寫在同一個function裡面
我認為真正漂亮的code是沒有code duplication和object duplication
也就是沒有重複功能的程式碼和物件
而不是越簡短的code越漂亮
--
Blog http://blog.cjcat.net
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.231.103.162
推
05/25 08:38, , 1F
05/25 08:38, 1F
推
05/25 08:41, , 2F
05/25 08:41, 2F
→
05/25 08:42, , 3F
05/25 08:42, 3F
→
05/25 09:25, , 4F
05/25 09:25, 4F
→
05/25 09:25, , 5F
05/25 09:25, 5F
→
05/25 09:26, , 6F
05/25 09:26, 6F
→
05/25 09:26, , 7F
05/25 09:26, 7F
→
05/25 09:26, , 8F
05/25 09:26, 8F
→
05/25 09:27, , 9F
05/25 09:27, 9F
推
05/25 12:30, , 10F
05/25 12:30, 10F
推
05/25 12:46, , 11F
05/25 12:46, 11F
推
05/25 13:32, , 12F
05/25 13:32, 12F
推
05/26 22:46, , 13F
05/26 22:46, 13F
推
05/27 06:06, , 14F
05/27 06:06, 14F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章