1

我正在使用 Flex 4.6 和 AIR 3.3 构建一个 IOS 应用程序。我确实有一些 Objective-C 库,我们将使用它们来处理音频、图像和视频以创建新的“视频”文件。

由于我们正在通过本机扩展在设备上进行所有这些处理,我想知道用户是否会看到应用程序锁定直到处理完成。换句话说,我是否需要向他们显示一个进度条,并且在完成之前不允许他们在应用程序中执行任何其他操作,或者本机扩展代码是否在单独的线程中运行?

第二个问题是......如果 Native Code 不在单独的线程中运行,是否可以使用新的 Actionscript Workers 将处理卸载到单独的线程?

4

1 回答 1

3

您的 ANE 可以调用新线程,因此您的应用程序不应锁定。

这是开发原生扩展的一个很好的参考:http: //help.adobe.com/en_US/air/extensions/air_extensions.pdf

引用相关部分:“本机 C 代码可以将异步事件分派回扩展的 ActionScript 端。例如,扩展方法可以启动另一个线程来执行某些任务。当另一个线程中的任务完成时,该线程调用 FREDispatchStatusEventAsync() 来通知扩展的 ActionScript 端。事件的目标是 ActionScript ExtensionContext 实例。

关于工作线程,是的,这正是工作线程的用途,从我从 AS3 实现中读到的内容来看,它会像那样工作。但是,我最好的选择是,对于此类任务,使用 ANE 会比使用 AS3 更快。如果您准备好运行库,我会使用 ANE,并且可能会在发布后尝试工作线程,如果您主要在 AS3 中进行开发,可能会更容易维护。

于 2012-08-20T15:53:40.607 回答