我在Flash Builder 4中,我得到了SWC-的唯一方法做了一個簡單的項目> SWF發生的事情是通過創建一個Flex項目,而不是ActionScript項目中,選擇「運行時共享庫(RSL)」,而不是「外部」。這是因爲Flex框架有一些類可以爲你加載這些庫。它也自動轉換(我應該說提取)的過程。
現在,如果您不想爲此創建Flex項目,則可以自行提取SWF。 SWC文件格式只是一個包含SWF和描述內容的XML文件的Zip。然後,您可以使用加載程序動態加載此提取的SWF文件,並設置正確的Application Domain。這是我的示例項目的一個片段。
public class Web extends Sprite
{
public function Web()
{
//you will not be able to instantiate classes of your library until it's loaded
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.load(new URLRequest("library.swf"), new LoaderContext(false, ApplicationDomain.currentDomain));
}
protected function onLoadComplete(event:Event):void
{
//here you can create instances of classes defined in your library
new Asset();
}
}
你可能會認爲這是一個非常繁瑣的工作,以解壓縮+每次你的設計更新庫時拷貝。您可以使用腳本或Ant文件自動執行此過程。不幸的是,除非我錯過了某些東西,否則它看起來像Flash Builder不希望您擴展構建過程,因此您仍然需要一些手工工作或完全轉換爲Ant(或類似的東西)來構建。
祝你好運!
或者,可以將swc文件加載到bytearray中,使用一些zip庫從其中提取swf文件,並將其加載到所述ApplicationDomain中 - 全部在actionscript中。 – alxx 2010-11-14 08:55:40
@alxx好主意。我會試試這個。 – subb 2010-11-15 01:21:26