Показать сообщение отдельно
Старый 06.08.2007, 19:45
Ромастый вне форума Посмотреть профиль Отправить личное сообщение для Ромастый Найти все сообщения от Ромастый
  № 1  
Ответить с цитированием
Ромастый
 
Аватар для Ромастый

Регистрация: Jan 2004
Адрес: На чердаке.
Сообщений: 1,112
По умолчанию Экземпляр, созданный при объявлении статического свойства не видит других классов

Столкнулся со следующей штукой.
Код:
class MyClass {
	static var ref = new MyClass("from class MyClass: ");
	function MyClass(from) {
		var from=from? from : "from outside:"
		trace(from+"  "+mx.events.EventDispatcher);
	}
}
во fla:
Код:
myClass = new MyClass();
//from class MyClass:   undefined
//from outside:  [type Function]
При создании экземпляра класса через объявление статического свойства класса экземпляр не видит других пользовательских классов.
(С тем же успехом вместо mx.events.EventDispatcher можно написать mx.utils.Delegate)
Однако
Код:
class MyOtherClass extends MyClass {
	static var ref = new MyOtherClass("from class MyOtherClass extends MyClass: ");
	function MyOtherClass(from) {
		super(from)
	}
}
Код:
myOtherClass = new MyOtherClass();
//from class MyClass:   [type Function]
//from class MyOtherClass extends MyClass:   [type Function]
//from outside:  [type Function]
В этом случае все работает, то есть в дочернем классе при создании экземпляра через стат-свойство мы можем обращаться к методам и свойствам других классов.

Кроме того, если в MyClass заменить EventDispatcher на какой-либо из документированных классов (XML или скажем BitmapData) - тоже все нормально работает.
В чем тут дело? Особый порядок инициализации классов?
__________________
...Тебе страшно? Мне - нет.


Последний раз редактировалось Ромастый; 06.08.2007 в 19:55.