Adobe建议在Flex Hero移动应用中使用ActionScript进行外观和ItemRenderers。我的印象是MXML被编译成ActionScript。
当我在MXML中声明一个组件时,幕后到底发生了什么?
as3创建的对象与MXML创建的对象之间究竟有什么区别?
如果我将MXML组件转换为as3类(即添加每个子组件并在代码中而不是在声明性MXML语法中手动设置每个子项的每个属性),我获得了什么?
(目前我还没有可以测试的实际设备,并且在为包含数百个项目的List使用MXML ItemRenderers时,我的桌面计算机上没有性能下降。)
答案 0 :(得分:7)
- 当我在MXML中声明组件时,幕后究竟发生了什么?
醇>
你关心得对。 MXML被编译成ActionScript。您可以使用keep compiler参数查看此ActionScript。它会变得非常复杂。你手工编写的代码更优雅。我认为这就是Adobe告诉我们使用AS进行移动设备皮肤的原因。
- 对象之间究竟有什么区别 由as3创建,由as3创建 MXML?
醇>
如果你的意思是记忆中的物体,那就没有区别了。 MXML组件就像ActionScript组件一样。但是,如果使用MXML生成ActionScript,则运行的实际组件具有不同的代码库。
- 如果我将MXML组件转换为as3类(即添加每个子组件) 并为每个孩子设置每个属性 手动代码而不是代码 声明性的MXML语法)我获得了 什么?
醇>
您可以更精细地控制组件的工作方式和运行方式。我为InsideRIA写了一篇关于这个确切主题的文章:http://insideria.com/2010/05/7-reasons-to-write-in-actionsc.html
(目前我没有实际的 要测试的设备,没有 我桌面上的性能下降 使用MXML ItemRenderers时的计算机 对于包含数百个项目的列表。)
作为澄清的问题,您意识到基于列表的类只呈现屏幕上的内容,对吧?因此,即使您的列表包含数百个项目,也很可能一次只显示5-10个项目。这意味着只创建了5-10个渲染器。滚动列表是模拟的,而不是真实的。渲染器只是改变他们的数据。无论如何,我试图做的一点是,包含数百个项目的列表应该与具有十个项目的列表或具有一千个项目的列表具有相同的效率。我希望你会在桌面和设备上看到非常不同的性能。