Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Actionscript 3:预呈现类实例以提高性能_Actionscript 3_Actionscript - Fatal编程技术网

Actionscript 3 Actionscript 3:预呈现类实例以提高性能

Actionscript 3 Actionscript 3:预呈现类实例以提高性能,actionscript-3,actionscript,Actionscript 3,Actionscript,我有几个类,它们创建了大量按钮,并创建和定位了事件侦听器。目前,我重新使用了一次创建的类的实例,以在单击按钮和出现列表之间的时间上改善用户体验。我希望在用户第一次创建实例时对其进行改进 因此,我现在在应用程序启动期间创建了一个实例,并将其存储起来供以后使用 这看起来像这样: _MenuView = new MenuView(); _MenuView.visible = false; addChild(_MenuView); removeChild(_MenuView); _MenuView.vi

我有几个类,它们创建了大量按钮,并创建和定位了事件侦听器。目前,我重新使用了一次创建的类的实例,以在单击按钮和出现列表之间的时间上改善用户体验。我希望在用户第一次创建实例时对其进行改进

因此,我现在在应用程序启动期间创建了一个实例,并将其存储起来供以后使用

这看起来像这样:

_MenuView = new MenuView();
_MenuView.visible = false;
addChild(_MenuView);
removeChild(_MenuView);
_MenuView.visible = true;

这是个好方法吗?

我觉得不错。我倾向于使用类似的方法。如果你有一些不变的东西,比如每次出现时看起来都一样的菜单,考虑到它不会占用太多内存,不必反复创建它是有意义的。在这一点上,请确保您多次重新创建的所有内容都被垃圾回收,这样您就不会出现内存泄漏。

基于意见的答案。不,这是完全错误的——但不是你想象的那样。您是否尝试过测量创建所有这些按钮需要多长时间?或者第一次/第二次将它们添加到显示列表的影响?如果没有问题(最差的设备配置没有延迟),尝试解决它可能会对您造成严重的影响,这将是一个问题。我有3个类,在平均Android设备上创建总共需要4秒,在较新的iOS设备上大约2秒,在core i7 pc上几乎是瞬间。因此,在Android上创建的第一个类中,我每次单击都会有大约1.3秒的延迟。你使用常规Flash内容吗?我的意思是,它不是Starling或任何其他Stage3D框架,而是render。使用常规Flash内容,您将永远无法获得任何像样的性能。Flash使用CPU进行渲染(即使您将某些发布选项设置为“GPU”-该选项在某些有限的情况下会有所帮助),而移动设备却没有这样的CPU能力。考虑把你的项目移植到Starling——让Flash在移动设备上流畅运行的唯一方法是实际使用它的GPU来渲染内容。是的,对于移动来说,一切都必须转换成位图。一般来说,位图在GPU上,其他所有东西都在CPU上。下面是将常规movieclips转换为位图的示例代码: