我在尝试使用Proxy
类并覆盖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];
}
}
}
我一直在尝试使用它来使一些属性为只读(根据previous question of mine上的答案),但是有一些奇怪的行为,我似乎无法解决。
使用上面的内容,我尝试访问变量stuff
,如下所示:
var t:Thing = new Thing();
trace(t.stuff);
然而,这会引发以下错误:
1119:通过引用访问可能未定义的属性内容 用静态类型的东西。
但如果我这样做:
trace(t["stuff"]);
工作正常。我做错了什么?
答案 0 :(得分:3)
这是因为您的课程不是动态的,只需添加“动态”关键字,一切都会很好:
public dynamic class Thing extends Proxy