[Flex mobile]关于放置自定义组件的许多实例

时间:2013-11-15 16:17:25

标签: flex memory components

目前,我的应用开发正处于优化阶段。添加我的一个组件时遇到问题:PlayerInfo,它从Group扩展而且里面有一些标签和图像,我必须创建60个这个组件并将所有组件放入HGroup。但是在将它们添加到hgroup的过程中,我的应用程序停止响应几秒钟,这是不能容忍的。我可以用更少的内存来实现这一目标吗?

我已阅读this页面并想过我是否可以使用我的任何组件,而不仅仅是位图。有人知道怎么做吗?

这是我的表现:

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);
}

}

1 个答案:

答案 0 :(得分:0)

Can I achieve this with less memory usage? 

是的!用你现在的方法;如果你有60个组件实例,那么应用程序会创建60个组件实例,将它们全部呈现并将它们放在屏幕上;即使他们目前不是一个观景区。

你应该像@RiaStar建议的那样使用一个类,比如List或DataGroup。您的自定义组件PlayerInfo应该用作itemRenderer,而您创建这些组件的'list'应该成为List的dataProvider。

完成此操作后,您的应用程序将使用List的渲染器回收。因此,只有屏幕上显示的视觉元素才会显示给用户。所以,如果你的60个列表中有10个项目显示在屏幕上;该应用程序将减少50个项目。这样可以更好地利用处理能力和更好地利用设备存储器。

要将类更改为渲染器,必须实现dataChange()事件处理程序,以便只要列表更改渲染器应显示的数据,组件就会更新。

我认为我们没有足够的信息来获得更详细的解释。你的dataProvider是什么?您的自定义组件需要设置哪些功能?