【发布时间】:2013-12-25 10:46:49
【问题描述】:
我们正在使用 air 3.9 sdk 开发一个 iOS 应用程序。我们的应用程序是这样的,我们在 ipa 文件中打包了 2 个 SWF,即 main.swf 和一个 experience.swf。 main.swf 最初是使用 application.xml 加载的。在 main.swf 中单击按钮会加载 experience.swf(位于 ipa 的 bin 文件夹中,不是远程下载的)。这个 experience.swf 包含资产和代码。
当我们创建一个临时构建时,experience.swf 第一次加载完美,但如果用户返回到 main.swf 然后再次尝试加载 experience.swf,它不会加载。只有默认的舞台颜色可见。 (这个问题只出现在ad-hoc build上,debug build没有这个问题)
为了加载这个 experience.swf,我们使用 flash.display.loader 并将 loaderContext 设置为 ApplicationDomain.currentDomain。
mcExperience = new MovieClip();
var url:URLRequest = new URLRequest("ChristmasExperience.swf");
var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);
loader.load(url, loaderContext);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, CompleteHandler);
addChild(mcExperience);
private function CompleteHandler(e:Event):void
{
trace("I HAVE LOADED .... SWF loaded... , waiting for the constructor call back..." + e.target.loader.content);
//mcExperience.addChild(loader);
mcExperience.addChild(MovieClip(e.target.loader.content));
//TODO : Set the Session ID Here
m_experienceBase.SetSessionID(int(m_ExperienceSessionID));
m_experienceBase.SetLocalPlayer(m_localPlayer);
//(loader.content as MovieClip).soundTransform = new SoundTransform(0);
//addChild(loader);
//setChildIndex(m_tfConsoleMsgDisplay, numChildren - 1);
}
当体验卸载时,我们移除体验.swf 的持有者MovieClip 并卸载flash.display.loader。这仍然不会重新加载之前加载的 experience.swf。
if (mcExperience)
{
mcExperience.removeChildren();
removeChild(mcExperience);
mcExperience = null;
}
我们将 swf-version=22 用于主 swf 和体验 swf。
这对我们来说是一个相当大的问题,我们已经阅读了很多帖子,以帮助更好地理解这个问题(下面有几个例子):
- Adobe AIR, IOS, and Multiple SWFs - Returning to a previously loaded SWF
- Load and reload external SWF in AIR for iOS
- http://blogs.adobe.com/airodynamics/2012/11/09/packaging-and-loading-multiple-swfs-in-air-apps-on-ios/
有没有办法在 ios 应用程序中重新加载辅助 swf?
【问题讨论】:
-
为什么要重新加载辅助 swf?为什么不将它保存在内存中并在需要时添加/删除子它?
if(!mcExperience){ loadMcExperience();} else { return mcExperience; }
标签: ios actionscript-3 air flash loader