[問題] 實作一個可監聽的基本型別?

看板Flash作者 (moonet)時間16年前 (2010/05/13 17:34), 編輯推噓2(2015)
留言17則, 2人參與, 最新討論串1/2 (看更多)
基本型別例如 var x:int = 1; 今天我想要監聽 x 當 x 值有變化就丟出一個事件 也許我要先作一個 Class ListenableInt 但是我又想要這樣寫 var x:ListenableInt = 1; //此時就會丟出事件 x = 2; 請問有可能嗎? 我的問題點在於 1 是int常數,不是 ListenableInt常數 有沒有辦法作出一個 class 是可以吃這種常數的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.9.202 ※ 編輯: etrexetrex 來自: 140.118.9.202 (05/13 17:35)

05/13 18:49, , 1F
自己寫setValue()和getValue()
05/13 18:49, 1F

05/13 18:49, , 2F
繼承Proxy class或許是另外一解
05/13 18:49, 2F

05/13 18:50, , 3F
Proxy class有提供一些讓你修改預設變數行為的機制
05/13 18:50, 3F

05/13 18:52, , 4F
05/13 18:52, 4F

05/13 19:24, , 5F
嗯 我是不想要每個變數都寫一次get set
05/13 19:24, 5F

05/13 19:24, , 6F
才想說作一個class 寫一遍就可以一直用
05/13 19:24, 6F

05/13 19:30, , 7F
我想 Proxy 應該也是不行的
05/13 19:30, 7F

05/13 19:31, , 8F
因為在寫 x = 2; 的時候其實是等於 x = new int(2);
05/13 19:31, 8F

05/13 19:32, , 9F
整個物件都被換掉了吧
05/13 19:32, 9F

05/13 19:32, , 10F
這樣的話就只能作成 x.value = 2; 之類的方式了
05/13 19:32, 10F

05/13 19:32, , 11F
但是這樣就髒掉了
05/13 19:32, 11F

05/13 20:58, , 12F
整個物件換掉啊...那這樣只能在parent寫get/set啦
05/13 20:58, 12F

05/13 20:59, , 13F
應該不管怎樣還是得弄髒吧 :/
05/13 20:59, 13F

05/13 20:59, , 14F
Proxy是可以做到此物件任何property被修改都丟事件
05/13 20:59, 14F

05/13 21:00, , 15F
不然你就弄個Proxy當做一個data holder吧?
05/13 21:00, 15F

05/13 21:00, , 16F
它擁有的property變更的時候都丟出式見這樣
05/13 21:00, 16F

05/13 21:14, , 17F
如果能動態的幫一個屬性加丟出事件也是可以
05/13 21:14, 17F
文章代碼(AID): #1BwyUFe- (Flash)
文章代碼(AID): #1BwyUFe- (Flash)