2011-06-06 57 views
2

我尝试使用Proxy类并覆盖getProperty()方法时遇到了一个特殊问题。我已经把它贴在下面我举的例子类代码:AS3:重写代理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: Access of possibly undefined property stuff through a reference with static type Thing.

但是,如果我这样做:

trace(t["stuff"]); 

它工作正常。我究竟做错了什么?

回答

3

这是因为你的类不是动态的,只是添加“动态”的关键字,都将是不错的:

public dynamic class Thing extends Proxy