Показать сообщение отдельно
Старый 23.02.2012, 15:50
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 7  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Т.е. что, получается если нет кросс-ссылок, а мы содим вот такую весчь:
Код AS3:
public class A
{
    public static var a:int = B.b;
}
public classB
{
    public static var b:int = 10;
}
То а гарантированно получит значение 10?
Вообще да, проверил работает, действительно предсказуемо.

Но дело в том что на практике все время сталкивался с проблемами при обращении к сатитческим полям. Видимо из-за того, что неочевидно кроссылки создал. Приходилось решать ленивой инициализацией (а переполнение стека не происходило, потому что разные части класса инициализировались, наверно).

Поэтому думал что он вообще как повезёт их инициализирует.
Вобщем, дров наломать можно.

С внутренними классами вообще всё безобразно:
Код AS3:
package {
	import flash.display.Sprite;
	public class Example extends Sprite {
		// Падает со словами "Inner не является конструктором."
		public static var INNER:Inner = new Inner();
		public function Example() {
			trace(INNER);
		}
	}
}
class Inner {}
А так не падает:
Код AS3:
package {
	import flash.display.Sprite;
	public class Example extends Sprite {
		private static var _INNER:Inner;
		public static function get INNER():Inner {
			if (_INNER == null) {
				_INNER = new Inner();
			}
			return _INNER;
		}
		public function Example() {
			trace(INNER);//[object Inner]
		}
	}
}
class Inner {}