Цитата:
|
Если честно я понял все кроме этой части
|
В том смысле что в теле класса не получится определить

Код AS3:
public namespace ns1 = test.Namespace1 // package test { public namespace Namespace1 = "ns_1" }
// или
public namespace ns2 = test.NamespacesList.NAMESPACE_2 // строковая константа в классе NamespacesList
что конечно же довольно грустно. Но это особенность компилятора, неймспейсы объявлений методов это константы, они должны быть инициализированы перед компиляцией/в ее процессе, поэтому не могут быть ссылками на члены другого класса.
Хелп говорит, что первый метод должен работать, однако компилятор утверждает что не знает никакого test.Namespace1.
При этом сами методы класса, объявленные с этим же неймспейсом, у него проблем не вызывают((( Явно какой-то баг.
Добавлено через 14 минут
То есть вот так нельзя (не может инициализировать неймспейсы ссылками на объявленные в пакете неймспейсы)

Код AS3:
package test
{
public class Class_1
{
public namespace ns1 = test.Namespace1;
public namespace ns2 = test.Namespace2;
public function Class_1() { }
public function activation(mode:Namespace):void
{
mode::foo();
}
ns1 function foo():void
{
trace("foo in NS1 operating");
}
ns2 function foo():void
{
trace("foo in NS2 operating");
}
}
}
а так можно

Код AS3:
package test
{
public class Class_1
{
public function Class_1() { }
public function activation(mode:Namespace):void
{
mode::foo();
}
test.Namespace1 function foo():void
{
trace("foo in NS1 operating");
}
test.Namespace2 function foo():void
{
trace("foo in NS2 operating");
}
}
}
и так пожалуйста

Код AS3:
package test
{
public class Class_1
{
public namespace ns1 = "n1";
public namespace ns2 = "n2";
public function Class_1() { }
public function activation(mode:Namespace):void
{
mode::foo();
}
ns1 function foo():void
{
trace("foo in NS1 operating");
}
ns2 function foo():void
{
trace("foo in NS2 operating");
}
}
}