Apache flex [Flex mobile]关于放置自定义组件的多个实例
现在,我的应用程序开发正处于优化阶段。我在添加我的一个组件时遇到了一个问题:PlayerInfo,它是从组中扩展而来的,其中有一些标签和图像,我必须创建60个组件,并将我的全部放入一个HGroup。但在将它们添加到hgroup的过程中,我的应用程序只是在几秒钟内停止响应,这是不可容忍的。我可以用更少的内存使用来实现这一点吗 我读过这一页,想我是否可以用我的任何组件,而不仅仅是位图来完成它。有人知道怎么做吗 我是这样做的:Apache flex [Flex mobile]关于放置自定义组件的多个实例,apache-flex,memory,components,Apache Flex,Memory,Components,现在,我的应用程序开发正处于优化阶段。我在添加我的一个组件时遇到了一个问题:PlayerInfo,它是从组中扩展而来的,其中有一些标签和图像,我必须创建60个组件,并将我的全部放入一个HGroup。但在将它们添加到hgroup的过程中,我的应用程序只是在几秒钟内停止响应,这是不可容忍的。我可以用更少的内存使用来实现这一点吗 我读过这一页,想我是否可以用我的任何组件,而不仅仅是位图来完成它。有人知道怎么做吗 我是这样做的: class PlayerInfo extends Group{ priv
class PlayerInfo extends Group{
private var name:Label;
private var age:Label;
private var photo:Image;
}
在我的列表课上:
public function addPlayers(arrPlayer:Array):void{
for(;;){
var player:PlayerInfo=new PlayerInfo();
HGroup.addElement(player);
}
}
对!!以你目前的方式;如果您有60个组件实例,那么应用程序将创建60个组件实例,并将它们全部呈现在屏幕上;即使它们当前不是视图区域
正如@RiaStar所建议的,您应该使用一个类,例如列表或数据组。您的自定义组件PlayerInfo应用作itemRenderer,您从中创建这些组件的“列表”应成为列表的数据提供程序
一旦你这样做了,你的应用程序将利用列表的渲染器。因此,只有屏幕上显示的视觉元素才会显示给用户。所以,若你们有60个列表中的10个项目显示在屏幕上;该应用程序将少生成50个项目。这将更好地利用处理能力和设备内存
要将类更改为渲染器,必须实现dataChange()事件处理程序,以便在列表更改渲染器应显示的数据时,组件都会更新
我认为我们没有足够的信息来得到更详细的解释。你的数据提供者是什么?需要在自定义组件上设置哪些属性 最好将
列表
与您的播放器信息
一起用作自定义项目渲染器。它优化为仅在渲染器可见时实例化渲染器。您的方法将一次创建它们。如果你不需要列表功能,你可以使用更轻量级的数据组
(虽然我不确定这在移动设备上的表现)。我自学了flex。我认为我有资格编写一个应用程序,但现在看来我还有很多需要改进的地方,谢谢你的回答。非常感谢你的回答Rebog:D,虽然我还没有时间测试这个,但我认为它会起作用,再次感谢你。
Can I achieve this with less memory usage?