Куда идет код в тегах Script в результирующем классе AS? - PullRequest
0 голосов
/ 25 мая 2010

Мне было интересно, что происходит с кодом, содержащимся в теге <mx:Script>. Если я определю функцию tehre, она просто станет функцией-членом сгенерированного класса. Но я заметил, что для компилятора нормально, если я просто напишу там некоторые (статические) вызовы методов (в частности, я вызываю Font.registerFont()). Это работает нормально, но я чувствую себя немного виноватым за это, потому что я понятия не имею, что на самом деле происходит и когда выполняется код.

Ответы [ 2 ]

3 голосов
/ 25 мая 2010

MXML формально является языком генерации ActionScript. Таким образом, компилятор Flex преобразует весь MXML в ActionScript.

Если вы хотите увидеть, что происходит; добавьте аргумент keep-generate-actionscript к компилятору, и тогда вы сможете просмотреть сгенерированный код ActionSCript.

http://livedocs.adobe.com/flex/3/html/compilers_14.html#157203

Помимо этого; Я не очень понимаю ваш вопрос. Почему статические методы заставляют тебя чувствовать себя виноватым?

1 голос
/ 25 мая 2010

Следуя совету ответа www.Flextras.com , я сохранил сгенерированные классы Actionscript и посмотрел. Код внутри тегов <mx:Script> просто помещается в тело класса как есть. Зная это, я мог покопаться в Flex aliveoc и наткнулся на следующий абзац в разделе об определениях классов :

ActionScript 3.0 позволяет включать не только определения в тело класса, но и операторы. Операторы, которые находятся внутри тела класса, но вне определения метода, выполняются ровно один раз - когда определение класса встречается впервые и создается связанный объект класса.

Таким образом, размещение операторов внутри тега <Script> в файле MXML эквивалентно размещению кода в блоке static в определении класса Java.

...