0

我正在为 Android 平板电脑 @ work 开发一个应用程序。它需要定期加载图像和外部 SWF 文件。

问题是,当 I/O 发生时(使用 Loader 类),UI 中的帧速率下降非常陡峭(实际上它似乎将 UI 从半秒冻结到一整秒)。根据我对 AS3、Flash 和 AIR 的了解,加载应该是异步的,但感觉并不像这样。

这种减速非常烦人,甚至没有放置带有“加载图标”的影片剪辑(如 AJAX 应用程序)只是停留在那里没有动画,直到加载完成(并且不再需要所述图标)。

有没有人遇到过这个问题?有什么想法可以解决,或者至少可以最小化这个问题吗?

提前致谢!

4

2 回答 2

1

默认情况下,如果您使用 aLoader加载 PNG 或 JPEG 图像,则图像数据仅在使用时才被解码。这发生在主线程上,当从加载的图像创建位图或纹理时,可能会导致 UI 卡顿。

将图像解码策略标志设置为 可能会有所帮助ON_LOAD,这将在 Loader 的后台线程中解码图像:

import flash.system.ImageDecodingPolicy;

...

loaderContext.imageDecodingPolicy = ImageDecodingPolicy.ON_LOAD;
loader.load(url, loaderContext);

在LoaderContext 文档中了解有关此主题的更多信息。文档状态ON_LOAD可能会使用更多内存。

此外,如果您使用的是 Stage3D(Starling、Away3D 等),实际上可能是纹理上传需要时间。GPU 优化是一个完全不同的问题,但您可以在Starling Performance Optimization wiki上进行一些研究。简短的回答是您想要 1) 一次上传所有纹理(例如在加载屏幕期间),2) 您想要将纹理一起批处理到图集中,以及 3) 您甚至可以使用 Adob​​e ATF 工具压缩纹理以便他们更快地上传并使用更少的 GPU 内存。如果您想了解更多详情,请告诉我。

于 2013-05-28T03:53:38.507 回答
0

对于并发,请使用 ActionScript Worker。 http://www.bytearray.org/?p=4423

于 2012-10-19T09:12:13.293 回答