Компилятор AS автоматически реорганизует ваш код.В действительности это будет выглядеть примерно так:
public var name:String;
public function Greeter(initialName:String = "") {
name = initialName;
}
Вы можете проверить это, выполнив следующее:
public var name:String = "Hello!";
public function Greeter(initialName:String = "") {
trace(name); // outputs Hello!
}
Это тоже будет работать:
public function Greeter(initialName:String = "") {
trace(name); // outputs Hello!
}
public var name:String = "Hello!";
Весь код, который находится в классе, но вне метода (включая конструктор, который является просто специальным методом), будет выполнен перед кодом конструктора, что может быть немного обманчивым.
В общем, не делайте ничего вне методов, кроме как в большинстве переменных установки, как указано выше.Обычно все настройки должны быть выполнены в конструкторе.
РЕДАКТИРОВАТЬ
Я обновляю свой ответ, чтобы ОП получал правильную информацию, даже если другой ответ был принят.
Компилятор перекомпилирует код.См. Изображения ниже - я использую декомпилятор SoThink SWF, который показывает состояние файла класса после публикации SWF.Обратите внимание, как строка выводится, и, таким образом, она фактически реорганизуется таким образом, что она существует в верхней части класса.
Документ Flash, вызывающий класс
Код класса (примечаниепеременная внизу)
Декомпилированный код класса SWF (обратите внимание на переменную вверху). Из интереса также обратите внимание, как Flash внутренне изменяет имена переменных, например param1 и т. д.
Если у вас есть декомпилятор sothink, вы можете попробовать это сами.