[問題] addEventListener 隱含function的寫法

看板Flash作者 (兔子)時間13年前 (2011/05/24 14:15), 編輯推噓9(9017)
留言26則, 9人參與, 最新討論串1/3 (看更多)
如果我是寫 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)

05/24 14:24, , 1F
我覺得第二種比較漂亮說 :)
05/24 14:24, 1F

05/24 14:42, , 2F
第二種比較漂亮吧,第一種有種ad hoc的感覺
05/24 14:42, 2F

05/24 14:43, , 3F
而且第一種你需要自已保留function reference
05/24 14:43, 3F

05/24 14:43, , 4F
否則之後就無法remove event listener
05/24 14:43, 4F

05/24 14:43, , 5F
然後你的anonymous function就會變成orphan
05/24 14:43, 5F

05/24 14:44, , 6F
所占用的記憶體空間永遠無法被GC釋放掉
05/24 14:44, 6F

05/24 15:20, , 7F
我想說... 你要不要乾脆把所有東西都寫成一個物件...
05/24 15:20, 7F

05/24 15:21, , 8F
這樣應該比較漂亮也比較沒有簡潔的問題
05/24 15:21, 8F

05/24 15:35, , 9F
把所有東西都包在一個物件裡嗎
05/24 15:35, 9F

05/24 15:45, , 10F
第一種我只有在function要另外傳參數進去時才會用
05/24 15:45, 10F

05/24 16:50, , 11F
同樓上
05/24 16:50, 11F

05/24 17:22, , 12F
remove event listener是說delete嗎?
05/24 17:22, 12F

05/24 18:06, , 13F
如果函數很長 用第二種
05/24 18:06, 13F

05/24 18:07, , 14F
如果需要removeEventListener 用第二種
05/24 18:07, 14F

05/24 18:08, , 15F
第一種比較像是 jQuery 的寫法
05/24 18:08, 15F

05/24 18:33, , 16F
我大概是那種 覺得越複雜越漂亮的人... Orz
05/24 18:33, 16F

05/24 19:08, , 17F
寫成同一行看起來是很帥,可是有時候徒增困擾
05/24 19:08, 17F

05/24 19:18, , 18F
第一種比較像 jQuery, 第二種比較像C#,Java
05/24 19:18, 18F

05/24 19:19, , 19F
不過大部分寫 as3 的人都傾向於C#, Java
05/24 19:19, 19F

05/24 19:33, , 20F
可是我是反jQuery派的耶...(根本不想學
05/24 19:33, 20F

05/24 22:07, , 21F
第二種可以跑迴圈呼叫同一個function
05/24 22:07, 21F

05/24 22:07, , 22F
但是第一種跑回圈會占用多餘記憶體的樣子
05/24 22:07, 22F

05/25 05:45, , 23F
對啊 我就是用for去跑它 才發現會lag的...
05/25 05:45, 23F

05/26 22:47, , 24F
第一種有好處喔 可以利用這方法傳Value
05/26 22:47, 24F

05/27 06:37, , 25F
第二種當然也行,所以那應該不算是好處
05/27 06:37, 25F

06/05 10:59, , 26F
第二種要怎麼傳 是呼叫後再呼叫嗎
06/05 10:59, 26F
文章代碼(AID): #1Dsqq3SH (Flash)
文章代碼(AID): #1Dsqq3SH (Flash)