Flash AS3 - 内部命名空间修饰符

时间:2010-09-27 14:59:39

标签: flash actionscript-3

我正在建立一个我希望隐藏外部世界内部的图书馆。

我想我可以使用“内部课程”,我想隐藏课程,

我的理解是,在命名空间test.NS1中声明一个类意味着它只能 访问类在test.NS1中定义,没有别的。

例如,

(两者都在同一个图书馆中)

/src/NS/test.as - internal class
/src/NS/test2/test2.as - internal class

test / test2看不到对方。 我在这里错过了什么吗?或者没有正确的方法来隐藏我的内部课程但让他们在图书馆内进行交谈?

2 个答案:

答案 0 :(得分:4)

命名空间“internal”限制对相同包中定义的类的访问。因此,班级com.mycompany.app.Foo可以看到内部班级com.mycompany.app.Bar,但不能看到com.mycompany.app.data.Baz

请参阅http://www.adobe.com/livedocs/flex/201/langref/statements.html#internal

答案 1 :(得分:3)

供将来参考。

是的,您可以使用内部命名空间隐藏您的类! 您可以在每个子包中创建一个不同的命名空间,所有命名空间都指向相同的URI。

例如:

com.mycompany.app    内部命名空间foo =" yourcompany.com/as3/namespaces/internal_yourcompany"

com.mycompany.app.data    内部命名空间foo_data =" yourcompany.com/as3/namespaces/internal_yourcompany"

foo和foo_data将是相同的命名空间,但是在不同的包中。 我找到了这个解释here

  

对于物业的可见性,重要的是uri。你可以定义两个   两个不同包中具有不同名称的命名空间。只要它们含有   同样的uri,他们会指同一财产。

namespace aNs = "myUri";
namespace bNs = "myUri";

class MyClass {
  aNs var foo: String;
}

var instance: MyClass = new MyClass();
instance.aNs::foo; // works as expected
instance.bNs::foo; // works too

var cNs: Namespace = new Namespace( "myUri" );
instance.cNs::foo; // works as well