作者etrexetrex (moonet)
看板Flash
标题[问题] 实作一个可监听的基本型别?
时间Thu May 13 17:34:02 2010
基本型别例如
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)
1F:→ cjcat2266:自己写setValue()和getValue() 05/13 18:49
2F:→ cjcat2266:继承Proxy class或许是另外一解 05/13 18:49
3F:→ cjcat2266:Proxy class有提供一些让你修改预设变数行为的机制 05/13 18:50
5F:→ etrexetrex:嗯 我是不想要每个变数都写一次get set 05/13 19:24
6F:→ etrexetrex:才想说作一个class 写一遍就可以一直用 05/13 19:24
7F:→ etrexetrex:我想 Proxy 应该也是不行的 05/13 19:30
8F:→ etrexetrex:因为在写 x = 2; 的时候其实是等於 x = new int(2); 05/13 19:31
9F:→ etrexetrex:整个物件都被换掉了吧 05/13 19:32
10F:→ etrexetrex:这样的话就只能作成 x.value = 2; 之类的方式了 05/13 19:32
11F:→ etrexetrex:但是这样就脏掉了 05/13 19:32
12F:推 cjcat2266:整个物件换掉啊...那这样只能在parent写get/set啦 05/13 20:58
13F:→ cjcat2266:应该不管怎样还是得弄脏吧 :/ 05/13 20:59
14F:→ cjcat2266:Proxy是可以做到此物件任何property被修改都丢事件 05/13 20:59
15F:→ cjcat2266:不然你就弄个Proxy当做一个data holder吧? 05/13 21:00
16F:→ cjcat2266:它拥有的property变更的时候都丢出式见这样 05/13 21:00
17F:→ etrexetrex:如果能动态的帮一个属性加丢出事件也是可以 05/13 21:14