0

我发现了一些关于如何加载一个或多个外部 SWF 文件的信息,这些文件与我的 AIR iOS 应用程序打包在一起,实际工作代码是:

var myUrlRequest:URLRequest = new URLRequest(mySWF);
var myLoaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);
var loader: Loader = new Loader();
loader.load(myUrlRequest, myLoaderContext);
Object(root).MK.addChild(loader)

它适用于 Android 设备和 Windows PC,但在 iOS 上,它仅在第一次加载外部 SWF。在我的项目中,我有几个按钮可以加载外部 SWF,但每个按钮只在第一次工作。

任何想法?如果我无法重新加载 SWF,这似乎非常无用。

4

4 回答 4

0

您无法加载包含任何 ActionScript 字节码 (ABC) 的 SWF 文件,然后将其卸载并在 iOS 上重新加载。如果您尝试执行此操作,运行时将引发错误 3764。

于 2013-11-26T06:54:35.840 回答
0

如果您无法再次加载某些内容,也许最好简单地缓存它并强调只加载一次?

于 2013-10-23T10:33:14.863 回答
0

即使第二次没有代码,我也遇到了加载 SWF 的问题。我找到的解决方案取决于代码是来自应用程序区域(与应用程序一起打包)还是从外部加载(从 Web 或下载到缓存文件夹中)。我写了一篇关于这里的扩展文章,如果你有兴趣:http ://www.eqsim.com/blog/?p= 400 简而言之,这是我设置路径的代码:

var moduleDirectoryPath = "/modules/";

if (externalContent == FROM_CACHE) {
   moduleDirectoryPath = File.cacheDirectory.url + moduleDirectoryPath;
} else if (externalContent == FROM_WEB) {
   moduleDirectoryPath = "http://our-online-content.com" + moduleDirectoryPath;
}

那么这是我准备路径的代码,如果 SWF 来自应用程序区域或其他(缓存或网络):

if (loadFromApp) {
   path = moduleDirectoryPath + module_folder + "/" + module + "?nf="+getTimer();
} else {
   path = moduleDirectoryPath + module_folder + "/" + module;
}

最后,我的加载语句:

request = new URLRequest(path);
request.cacheResponse = false;
request.useCache = false;
_lc = new LoaderContext(false, ApplicationDomain.currentDomain, null);
moduleLoader.load(request, _lc);

现在我可以加载 SWF 并重新加载它们(更重要的是)。当然,SWF 中没有字节码。

于 2014-02-26T15:33:24.940 回答
0

处理这个问题的一个好方法是第一次将 SWF 文件加载到单独的影片剪辑中,然后当需要在之后的任何时间“加载”它们时,只需显示那些已经加载了 SWF 文件的影片剪辑。

于 2013-10-23T14:57:51.670 回答