當我構建一個用於minigames的Flex框架時,我計劃將一堆圖形資源(動畫片段符號)捆綁到一個swf文件中,我將其加載到我的Flex應用程序中,然後從swf文件中提取符號以供使用在我的應用程序。我的問題是:我如何通過actionscript來做到這一點?從swf文件中提取資產?
謝謝!
當我構建一個用於minigames的Flex框架時,我計劃將一堆圖形資源(動畫片段符號)捆綁到一個swf文件中,我將其加載到我的Flex應用程序中,然後從swf文件中提取符號以供使用在我的應用程序。我的問題是:我如何通過actionscript來做到這一點?從swf文件中提取資產?
謝謝!
如果您不想使用EMBED並且您不想在運行時加載資源,我建議您將SWF導出爲SWC。
這樣,您可以從actionscript中瀏覽SWC文件。您可以在編譯時檢查另一個動畫片段內的子動畫片段是否存在。
-library-path C:\path\to\your\file.swc
如果您使用FDT你有一個選項來自動添加SWC作爲參數:
如果您正在使用Flex編譯器,然後當你編譯記得添加此。
這裏是a demo關於如何使用FDT做到這一點。不確定你使用哪個工具。如果它是商業Flex Builder,則過程應該類似。
我想這就是你要找的。
我會嘗試創建一個資產/圖標庫AS文件。
東西沿着
package
{
public class IconLibrary
{
/*
* Framework Icons
*/
[Embed (source="../assets/fof_graphics.swf", symbol="clapperboard_icon")]
public static const clapperBoardIcon:Class;
[Embed (source="../assets/fof_graphics.swf", symbol="clapperboard_over_icon")]
public static const clapperBoardOverIcon:Class;
[Embed (source="../assets/fof_graphics.swf", symbol="close_button")]
public static const closeButton:Class;
[Embed (source="../assets/fof_graphics.swf", symbol="close_over")]
public static const closeOverButton:Class;
public function IconLibrary()
{
}
}
}
線然後,所有你需要做的是
source="{IconLibrary.clapperBoardIcon}"
,或者您希望顯示的資產的任何名稱。
地塊的位置不錯的解決方案,這裏有一個,如果你在運行時加載的SWF文件,並要提取的資產,你可以做你的裝載機以下完整的事件偵聽器:
var c:Class = Class(LoaderInfo(e.target).applicationDomain.getDefinition("myClassDefinitionName"));
這將存儲資產從swf作爲Class對象,因此您可以創建它的實例,如下所示:
var asset:MovieClip = new c();
+1對於推薦SWC方法 - 我其實並沒有想到那個。在某些情況下,無需運送額外的SWF可能是一個優勢,但對於基於Web的應用程序,它也可能導致更大的SWF。儘管如此,根據具體情況,可以提醒它是一種選擇。 – 2009-05-22 20:36:26