簡體   English   中英

在AIR for iOS中加載和重新加載外部SWF

[英]Load and reload external SWF in AIR for iOS

我發現了一些有關如何加載與AIR iOS App打包在一起的外部SWF文件的信息,實際的工作代碼為:

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,這似乎毫無用處。

如果您不能第二次加載某些東西,也許最好只是對其進行高速緩存,然后只進行一次加載?

處理此問題的一種好方法是,第一次將SWF文件加載到單獨的影片剪輯中,然后在此后任何時候需要“加載”它們時,只需顯示已經加載了SWF文件的影片剪輯即可。

您無法加載包含任何ActionScript ByteCode(ABC)的SWF文件,然后將其卸載並在iOS上重新加載。 如果嘗試執行此操作,則運行時將引發錯誤3764。

即使第二次沒有代碼,我也無法加載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中沒有字節碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM