首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3异步位图创建iOS

AS3异步位图创建iOS
EN

Stack Overflow用户
提问于 2013-06-27 03:08:49
回答 2查看 533关注 0票数 1

我正在使用Adobe Air开发一个iPad应用程序。

当应用程序启动时,我会将所有图像加载到BitmapData对象中。然后,我只需要创建Bitmap对象(它们只是容器)来使用存储在BitmapData对象中的像素。

在我必须创建一个带有大图像的Bitmap对象之前,这个方法工作得很好。应用程序会变慢,甚至冻结,长达1秒之久。

因为AS3是单线程的,所以我不能将创建Bitmap的任务委托给新的线程。另外,如果UI被冻结,我不能显示一个像样的微调器来通知用户“正在发生的事情”。

我该如何解决这个问题呢?有没有办法在不影响UI性能的情况下并行创建对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-27 04:27:04

看起来答案要简单得多,Adobe已经想到了这一点。

http://help.adobe.com/en_US/as3/dev/WS52621785137562065a8e668112d98c8c4df-8000.html

问题是,即使图像被加载到BitmapData对象中,它们仍然没有被解码。这就是为什么较大的图像需要一段时间才能放入Bitmap对象中。

解决方案很简单,只需在加载图像时使用指令强制图像解码,而不是在需要时强制图像解码。这是使用ImageDecodingPolicy.ON_LOAD完成的。

代码语言:javascript
复制
var loaderContext:LoaderContext = new LoaderContext(); 
loaderContext.imageDecodingPolicy = ImageDecodingPolicy.ON_LOAD; 
var loader:Loader = new Loader(); 
loader.load(new URLRequest("http://www.adobe.com/myimage.png"), loaderContext);
票数 0
EN

Stack Overflow用户

发布于 2013-06-27 03:13:15

您可以使用worker,它基本上是as3的后台线程,请在这里阅读ASDocs Worker

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17328494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档