Script标记中的代码在哪里进入生成的AS类?

时间:2010-05-25 11:37:38

标签: flex actionscript-3 mxml

我想知道<mx:Script>标记中包含的代码会发生什么。如果我定义一个函数tehre,它只是成为生成的类的成员函数。但我注意到,如果我只是在那里编写一些(静态)方法调用(具体来说,我调用Font.registerFont()),编译器似乎没问题。它工作正常,但我觉得这样做有点内疚,因为我不知道实际发生了什么以及何时执行代码。

2 个答案:

答案 0 :(得分:3)

MXML正式是一种ActionScript生成语言。因此,Flex编译器会将所有MXML转换为ActionScript。

如果你想看看会发生什么;将'keep-generated-actionscript'参数添加到编译器,然后您可以查看生成的ActionSCript代码。

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

除此之外;我真的不明白你的问题。为什么静态方法会让你感到内疚?

答案 1 :(得分:1)

遵循www.Flextras.com's answer的建议,我保留了生成的Actionscript类并查看了一下。 <mx:Script>标记内的代码只是按原样放在类主体中。知道了,我可以深入研究Flex livedocs并在section about class definitions中看到以下段落:

  

ActionScript 3.0不仅可以包含类体中的定义,还可以包含语句。在类主体内但在方法定义之外的语句只执行一次 - 当第一次遇到类定义并创建关联的类对象时。

因此,将语句放在MXML文件中的<Script>标记内等同于将代码放在Java类定义的static块中。