使用Air 3.9的iOS应用程序 - 我们如何重新加载以前加载的swf?

时间:2013-12-08 09:22:33

标签: ios actionscript-3 air flash loader

我们正在使用air 3.9 sdk开发iOS应用程序。我们的应用是这样的,我们在ipa文件中打包了2个SWF,即main.swf和experience.swf。 main.swf最初使用application.xml加载。在main.swf中单击按钮会加载experience.swf(它位于ipa中的bin文件夹中,不会远程下载)。此experience.swf包含资产和代码。

当我们创建ad-hoc构建时,experience.swf第一次完美加载,但如果用户返回main.swf然后再次尝试加载experience.swf,则不会加载。只是默认的舞台颜色是可见的。 (此问题仅发生在ad-hoc构建上。调试版本没有此类问题)

要加载此体验。我们使用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);
}

卸载体验后,我们删除了experience.swf的持有者MovieClip并卸载了flash.display.loader。这仍然无法重新加载以前加载的experience.swf。

if (mcExperience)
{
mcExperience.removeChildren();
removeChild(mcExperience);
mcExperience = null;
}

我们使用swf-version = 22作为主要和体验swf。

对我们来说这是一个非常大的问题,我们已经阅读了很多帖子,以帮助更好地理解这个问题(下面的几个例子):

有没有办法在ios应用程序中重新加载辅助swf?

2 个答案:

答案 0 :(得分:0)

不知道你是否在这里查了一下: http://blogs.adobe.com/airodynamics/2012/11/09/packaging-and-loading-multiple-swfs-in-air-apps-on-ios/

基本上你不能在IOS上重新加载swf,这是来自Adobe的口。

为了克服这个问题,Adobe附带了一个注意事项: “注意:重新加载纯资产SWF将适用于​​可从此处下载的AIR 3.7版本”
如果你问我,相当蹩脚
那么你必须做什么? 在第一个swf版本中,将旧版本的孔代码与旧版本一样好,并将第二个swf纯粹用作图形/动画资源。

虽然这是一个很大的缺点,但归咎于Adobe:D

答案 1 :(得分:0)

虽然它说重新加载纯资产SWF(SWF没有ABC)将适用于AIR 3.7,但我发现4.0存在问题。我有SWF没有代码没有工作,我需要一个解决方案。我在这里回答了我的做法:Load and reload external SWF in AIR for iOS并且更充分地在这里:http://www.eqsim.com/blog/?p=400