skip to main |skip to sidebar

2007-06-03

as3.0 Namespace 的访问

先来看一个例子

//ns.as
    package {
      public namespace ns = "http://www.sample.com/ns";
}
//A.as
package {
  use namespace ns;
  public class A {
    //public 变量
    public var val:int = 1;
    //ns 变量
    ns var val:int = 2;
    //public 函数
    public function foo():void {
      trace("foo1");
    }
    //ns 函数
    ns function foo():void {
      trace("foo2");
    }
  }
}

普通(静态)访问


   var a:A = new A();
//public 变量
trace(a.val); // ->1
//ns 变量
trace(a.ns::val); // ->2
//public 函数
a.foo(); // ->foo1
//ns 函数
a.ns::foo(); // ->foo2

在这里,不能用use namespace ns;因为他会与public命名空间发生冲突。

动态访问


   var a:A = new A();
//public 变量
trace(a["val"]); // ->1
//ns 变量
trace(a.ns::["val"]); // ->2
//public 函数
a.["foo"](); // ->foo1
//ns 函数
a.ns::["foo"](); // ->foo2

在这里,也不能用use namespace ns;因为他会与public命名空间发生冲突。

没有评论: