目前,我的应用开发正处于优化阶段。添加我的一个组件时遇到问题: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);
}
}
答案 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是什么?您的自定义组件需要设置哪些功能?