我們正在使用air 3.9 sdk開發iOS應用程序。我們的應用程序是這樣的,我們有2個SWF包裝在ipa文件中,即main.swf和experience.swf。 main.swf最初使用application.xml加載。在main.swf中單擊按鈕會加載experience.swf(它位於ipa中的bin文件夾內,而不是遠程下載)。這個experience.swf包含資產和代碼。使用Air 3.9的iOS應用程序 - 我們如何重新載入之前載入的swf?
當我們創建一個臨時構建時,experience.swf首次完全加載,但如果用戶返回到main.swf,然後嘗試再次加載experience.swf,它將不加載。只有默認的舞臺顏色是可見的。 (這個問題只發生在ad-hoc 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);
}
當經驗被卸載,我們刪除了experience.swf的動畫片段容器和卸載使用flash.display.Loader。這仍然不會重新加載之前加載的experience.swf。
if (mcExperience)
{
mcExperience.removeChildren();
removeChild(mcExperience);
mcExperience = null;
}
我們使用swf版本= 22爲主要和經驗瑞士法郎。
這對我們來說是一個相當大的問題,我們已經經歷了一堆帖子不見了,幫助理解這個問題更好的(幾下面的示例):
- 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?爲什麼不把它保存在內存中,並在需要時添加/刪除它? '如果(!mcExperience){loadMcExperience();} else {return mcExperience; }' – Prodikl