2013-12-08 44 views
2

我們正在使用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爲主要和經驗瑞士法郎。

這對我們來說是一個相當大的問題,我們已經經歷了一堆帖子不見了,幫助理解這個問題更好的(幾下面的示例):

有什麼辦法重裝iOS應用程序內的二級SWF?

+0

爲什麼要重新加載輔助swf?爲什麼不把它保存在內存中,並在需要時添加/刪除它? '如果(!mcExperience){loadMcExperience();} else {return mcExperience; }' – Prodikl

回答

0

不知道,如果你選中這裏: http://blogs.adobe.com/airodynamics/2012/11/09/packaging-and-loading-multiple-swfs-in-air-apps-on-ios/

基本上你不能重新加載IOS的SWF,這是從Adobe的嘴。

爲了克服這個問題,Adobe公司想出了一個注: 「注:純資產的主權財富基金的登陸艦將與AIR 3.7構建可從這裏下載工作」
漂亮跛如果你問我
所以你必須做什麼? 那麼把孔代碼像以前一樣放在較舊的空氣版本中,在第一個swf中,並且純粹將第二個swf用作圖形/動畫資源。

雖然這是一個很大的缺點,怪的Adobe:d

相關問題