MXML和ActionScript for Mobile之间的真正区别是什么?

ycl*_*ine 2 apache-flex mobile mxml actionscript-3

Adobe建议在Flex Hero移动应用程序中为外观和ItemRenderers使用ActionScript.我的印象是MXML被编译成ActionScript.

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

  2. as3创建的对象与MXML创建的对象之间究竟有什么区别?

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

(目前我还没有可以测试的实际设备,并且对于包含数百个项目的List使用MXML ItemRenderers时,我的桌面计算机上没有性能下降.)

Jef*_*ser 7

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

你关心的正确.MXML被编译成ActionScript.您可以使用keep compiler参数查看此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

(目前我还没有可以测试的实际设备,并且对于包含数百个项目的List使用MXML ItemRenderers时,我的桌面计算机上没有性能下降.)

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