2010-12-22 44 views
2

Adob​​e建议在Flex Hero移动应用中将皮肤和ItemRenderer用于ActionScript。我的印象是MXML被编译为ActionScript。MXML和ActionScript for mobile的真正区别是什么?

  1. 当我在MXML中声明一个组件时,到底发生了什么?

  2. as3创建的对象和MXML创建的对象究竟有什么不同?

  3. 如果我将MXML组件转换为as3类(即添加每个子项并在代码中手动设置每个子项的每个属性而不是声明式MXML语法),我是否获得了任何东西?

(目前我没有实际设备上测试,并使用MXML itemRenderer的与数百个项目的名单时,有我的桌面计算机上不会降低性能。)

回答

7
  1. 当我在MXML中声明组件时,幕后究竟发生了什么?

你照顾正确。 MXML被编译成ActionScript。您可以使用keep编译器参数来查看此ActionScript。它可以变得相当复杂。用手写的代码更优雅。我想这就是为什么Adobe告诉我们使用移动皮肤的AS。

  1. 究竟是由什么AS3创建的对象 和那些 MXML创造之间的区别是什么?

如果您的意思是记忆中的物体,则没有区别。 MXML组件就像ActionScript组件一样是类。但是,如果您使用MXML生成ActionScript,那么运行的实际组件具有不同的代码库。

  1. 如果我转换MXML组件为AS3类(即添加的每个孩子 和代码,而不是在 声明MXML语法手动设置每个孩子 每个属性)我在获得 什么?

您对组件的工作和操作方式有更精确的控制。我写了InsideRIA上一篇关于这个确切的话题:http://insideria.com/2010/05/7-reasons-to-write-in-actionsc.html

(目前我没有实际 设备上测试,并使用MXML itemRenderer的时候有我的桌面 电脑上没有 性能下降 为数百个项目的列表。)

作为一个澄清的事情,你意识到基于列表的类只呈现屏幕上的内容,对吧?因此,即使您的列表中有数百个项目,它很可能只会一次显示5-10个。这意味着只有5-10个渲染器被创建。滚动列表是模拟的,不是真实的。渲染者只是改变他们的数据。无论如何,我试图提出的一点是,一个包含数百个项目的列表应该与具有十个项目的列表或具有一千个项目的列表一样有效。我希望你会在桌面和设备上看到非常不同的性能。

+0

谢谢。好文章。 – yclevine 2010-12-22 16:44:44