我发现使用嵌入式脚本编写MXML类要比编写动作脚本文件容易得多。
我想知道在文件大小方面使用MXML文件会产生什么样的开销。我并不特别关注表现,但如果相关则会对任何发现感兴趣。
显然我在谈论具有布局的UI组件。 MXML更容易可视化和修改,但我不清楚它编译的确切内容。我希望有一个可以忽略不计的差异。
答案 0 :(得分:10)
如果你想使用相同的功能,MXML不会让你的swf更大。
影响大小的是使用Flex SDK及其组件。无论您使用MXML还是AS3声明它们,您都在使用它们,并且它们的代码正在构建到swf中。出于同样的原因,如果您引用Flex RSL,从而避免将Flex内容直接构建到swf中,那么无论哪种方式都是相同的。数据绑定确实会创建大量事件和侦听器,因此可能会导致一些膨胀,但不会超过使用AS3实用程序函数声明数据绑定机制。
由于MXML确实生成了中间AS3代码,因此它可能比您自己编写的代码更加冗长,因此您可以从中看到一些额外的大小。要查看它(通常有助于理解),您可以使用编译器指令查看以保留生成的代码。
来自:http://www.flashguru.co.uk/flex-2-compilation-hidden-goodies
- 在导航器面板中右键单击Flex项目。
- 从上下文菜单中选择“属性”。
- 在“属性”窗口中选择“Flex编译器”。
- 在'附加编译器中输入-keep-generated-actionscript arguments'field。
- 点击“确定”以应用更改。
- 单击“运行”按钮构建Flex项目。
- 在导航器面板中再次右键单击Flex项目。
- 从上下文菜单中选择“刷新”。
- 导航器中的Flex项目下应显示一个新文件夹 面板,名为'generated'
醇>
一旦进入调试和分析项目,这是一件好事,因为你可以真正看到编译器正在做正确(或错误)的事情。
答案 1 :(得分:0)
包含Flex框架(无论是通过MXML还是纯ActionScript)都会显着增加最终SWF的大小。
我刚刚写了一个由一个按钮组成的flash电影。 MXML版本为175K,而no-Flex Actionscript版本为2K。
虽然我自己并没有使用它,但是这个项目看起来很有希望获得(某些)Flex功能并且不那么膨胀: