Flex中的mxml最终都会被编译成AS代码,可以在编译选项中加上 -keep-generated-actionscript,就能看到mxml生成的AS文件。
用AS能做的事情,理论上都可以用mxml来做,但可能有些地方不一样。比如我在mxml里继承一个 TextInput取名为 textInputBase,
然后后又在另外一个textInputNumber.mxml里继承了textInputBase,就会出现 Multiple initializer values for default property, 'text', of type 'String'. 的错误。
这个原因可能是从mxml生成AS的过程中,首先在textInputBase中初始化了text。然后textInputNumber.mxml有初始化text字段,由于无法错误,无法看到As代码,这个也仅仅是猜测。主要问题在于mxml生成AS过程中的问题,解决方法是在textInputBase现实初始化text字段。
<s:TextInput xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:myEvent="myEvent.*"
text=""
implements="myEvent.interface1">