在Flex和普通的actionscript类中使用MXML文件有什么开销?

时间:2008-11-05 00:54:00

标签: flex optimization mxml

我发现使用嵌入式脚本编写MXML类要比编写动作脚本文件容易得多。

我想知道在文件大小方面使用MXML文件会产生什么样的开销。我并不特别关注表现,但如果相关则会对任何发现感兴趣。

显然我在谈论具有布局的UI组件。 MXML更容易可视化和修改,但我不清楚它编译的确切内容。我希望有一个可以忽略不计的差异。

2 个答案:

答案 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

     
      
  1. 在导航器面板中右键单击Flex项目。
  2.   
  3. 从上下文菜单中选择“属性”。
  4.   
  5. 在“属性”窗口中选择“Flex编译器”。
  6.   
  7. 在'附加编译器中输入-keep-generated-actionscript   arguments'field。
  8.   
  9. 点击“确定”以应用更改。
  10.   
  11. 单击“运行”按钮构建Flex项目。
  12.   
  13. 在导航器面板中再次右键单击Flex项目。
  14.   
  15. 从上下文菜单中选择“刷新”。
  16.   
  17. 导航器中的Flex项目下应显示一个新文件夹   面板,名为'generated'
  18.   

一旦进入调试和分析项目,这是一件好事,因为你可以真正看到编译器正在做正确(或错误)的事情。

答案 1 :(得分:0)

包含Flex框架(无论是通过MXML还是纯ActionScript)都会显着增加最终SWF的大小。

我刚刚写了一个由一个按钮组成的flash电影。 MXML版本为175K,而no-Flex Actionscript版本为2K。

虽然我自己并没有使用它,但是这个项目看起来很有希望获得(某些)Flex功能并且不那么膨胀:

http://code.google.com/p/e4xu/