Flash AS3:重写代理getProperty方法
我在尝试使用Flash AS3:重写代理getProperty方法,flash,actionscript-3,proxy,getter-setter,Flash,Actionscript 3,Proxy,Getter Setter,我在尝试使用代理类并重写getProperty()方法时遇到了一个特殊的问题。我在下面附上了我的示例类代码: package { import flash.utils.Proxy; import flash.utils.flash_proxy; public class Thing extends Proxy { // holder object private var _holder:Object; /**
代理
类并重写getProperty()
方法时遇到了一个特殊的问题。我在下面附上了我的示例类代码:
package
{
import flash.utils.Proxy;
import flash.utils.flash_proxy;
public class Thing extends Proxy
{
// holder object
private var _holder:Object;
/**
* Constructor
*/
public function Thing()
{
_holder =
{
stuff: "thing"
};
}
/**
* Override getProperty
*/
override flash_proxy function getProperty(name:*):*
{
trace(name + " being accessed");
return _holder[name];
}
}
}
我一直在尝试使用它使一些属性成为只读的(根据a上的回答),但是有一些奇怪的行为我似乎无法解决
使用上述方法,我尝试访问变量stuff
,如下所示:
var t:Thing = new Thing();
trace(t.stuff);
但是,这会引发以下错误:
1119:通过引用访问可能未定义的属性内容
用静态类型的东西
但如果我这样做:
trace(t["stuff"]);
它很好用。我做错了什么?这是因为你的类不是动态的,只要添加“dynamic”关键字,一切都会好起来:
public dynamic class Thing extends Proxy