看板 Flash 關於我們 聯絡資訊
※ 引述《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
pm2001:真正漂亮的code是過了兩個星期你還看得懂的code(無誤 05/25 08:38
AizawaYuichi:推不重複,改用布林傳值讓同一funcion作出很多種事 05/25 08:41
AizawaYuichi:也是一個好方法 05/25 08:42
cjcat2266:哈,pm說的也對 :) 05/25 09:25
cjcat2266:我有同學程式超強,參加過一堆比賽,但是他的變數名稱 05/25 09:25
cjcat2266:從來不超過3個character,而且從來不寫注解 05/25 09:26
cjcat2266:連他都兩天候就看不懂自己寫的code了 05/25 09:26
cjcat2266:因為他已經習慣比賽的模式,一次就把程式寫完這樣 05/25 09:26
cjcat2266:然後還有出現一行有7、8個"++"的指標運算,超難懂 05/25 09:27
emily114005:推這篇 05/25 12:30
hirabbitt:感謝這篇 05/25 12:46
etrexetrex:想要做到沒有重複程式碼 是一件辛苦事 05/25 13:32
StranGhost:這篇真的解釋得不錯~ 感謝 05/26 22:46
scars:奔放的code或許適合一次創作 但不適合用來工作 05/27 06:06