Показать сообщение отдельно
Старый 02.08.2013, 15:03
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Если честно я понял все кроме этой части
В том смысле что в теле класса не получится определить
Код 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");
		}
	}
}
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 02.08.2013 в 15:20.