作者hirabbitt (兔子)
看板Flash
標題[問題] addEventListener 隱含function的寫法
時間Tue May 24 14:15:28 2011
如果我是寫
addEventListener(事件, new function(E:事件):viod{
//要做的事
});
和另一種寫法
addEventListener(事件, 函式);
function 函式(E:事件):void{
//要做的事
}
在許多物件都要addEventListener的情況下
是不是第二種比較好?
因為第一種會變成每個物件有自己的function
第二種是讓每的物件指向相同的function
會這樣問是因為我覺得第一種很漂亮
所以通通都用了第一種
等到一次創造很多物件時
才發現會LAG...
--
◤ __ \__◣
◢◤◢◤ ψhirabbitt
◢ ◤ ◢███◣
◢███◣
我不是m █████
█████ 我不是s
██
●█
● █▇███
是溫柔 ██
╱╲ ●◥█████◣● 是傲嬌
◥
╱█
╱╱ ● ◥████ ˇ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.13.127.91
※ 編輯: hirabbitt 來自: 163.13.127.91 (05/24 14:19)
1F:→ aquarianboy:我覺得第二種比較漂亮說 :) 05/24 14:24
2F:推 cjcat2266:第二種比較漂亮吧,第一種有種ad hoc的感覺 05/24 14:42
3F:→ cjcat2266:而且第一種你需要自已保留function reference 05/24 14:43
4F:→ cjcat2266:否則之後就無法remove event listener 05/24 14:43
5F:→ cjcat2266:然後你的anonymous function就會變成orphan 05/24 14:43
6F:→ cjcat2266:所占用的記憶體空間永遠無法被GC釋放掉 05/24 14:44
7F:推 STARGAZERs:我想說... 你要不要乾脆把所有東西都寫成一個物件... 05/24 15:20
8F:→ STARGAZERs:這樣應該比較漂亮也比較沒有簡潔的問題 05/24 15:21
9F:→ hirabbitt:把所有東西都包在一個物件裡嗎 05/24 15:35
10F:推 Assyla:第一種我只有在function要另外傳參數進去時才會用 05/24 15:45
11F:推 peacedove:同樓上 05/24 16:50
12F:→ hirabbitt:remove event listener是說delete嗎? 05/24 17:22
13F:推 etrexetrex:如果函數很長 用第二種 05/24 18:06
14F:→ etrexetrex:如果需要removeEventListener 用第二種 05/24 18:07
15F:→ etrexetrex:第一種比較像是 jQuery 的寫法 05/24 18:08
16F:→ hirabbitt:我大概是那種 覺得越複雜越漂亮的人... Orz 05/24 18:33
17F:推 AizawaYuichi:寫成同一行看起來是很帥,可是有時候徒增困擾 05/24 19:08
18F:推 etrexetrex:第一種比較像 jQuery, 第二種比較像C#,Java 05/24 19:18
19F:→ etrexetrex:不過大部分寫 as3 的人都傾向於C#, Java 05/24 19:19
20F:→ hirabbitt:可是我是反jQuery派的耶...(根本不想學 05/24 19:33
21F:推 AizawaYuichi:第二種可以跑迴圈呼叫同一個function 05/24 22:07
22F:→ AizawaYuichi:但是第一種跑回圈會占用多餘記憶體的樣子 05/24 22:07
23F:→ hirabbitt:對啊 我就是用for去跑它 才發現會lag的... 05/25 05:45
24F:→ StranGhost:第一種有好處喔 可以利用這方法傳Value 05/26 22:47
25F:→ aquarianboy:第二種當然也行,所以那應該不算是好處 05/27 06:37
26F:推 StranGhost:第二種要怎麼傳 是呼叫後再呼叫嗎 06/05 10:59