我是新來的ActionScript世界,我遇到了一個困難的問題。我有一個SWF文件,其中包含一些我無法從源重新編譯,但又想在其他項目中再次使用的類。我看到SWC文件包含可以輕鬆重用的編譯類。我的問題是如何將現有的SWF文件轉換爲SWC文件,以便我可以將其用作常規庫?谷歌沒有幫助我。如何將現有的SWF文件轉換爲SWC以用作庫?
3
A
回答
3
SWC文件使用ZIP壓縮,實際上包含SWF。如果將文件擴展名從.swc
更改爲.zip
,則可以瀏覽內容和目錄結構。它看起來像這樣:
foobar.swc
-> catalog.xml
-> library.swf
隨着一些逆向工程,你也許可以通過建立catalog.xml
文件和ZIP文件一起打包他們創造從SWF一個SWC。
但這似乎相當複雜!您還可以使用Loader將外部SWF加載到您自己的SWF中。外部SWF的所有類,符號和時間線都將可用。當然,這會產生運行時間依賴性。
1
由於您無法將代碼重新編譯到SWC,因此如果您不需要在編譯時訪問這些類,則建議您使用Loader
。
[Event(name="complete", type="flash.events.Event")]
public class SWFLibrary extends EventDispatcher
{
private var loader:Loader;
private var loaded:Boolean;
public function SWFLibrary(urlOrBytes:*)
{
super();
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
if (urlOrBytes is String) {
loader.load(new URLRequest(urlOrBytes));
} else if (urlOrBytes is URLRequest) {
loader.load(urlOrBytes);
} else if (urlOrBytes is ByteArray) {
loader.loadBytes(urlOrBytes);
} else {
throw new ArgumentError("Invalid urlOrBytes argument");
}
}
public function getAssetClass(className:String):Class
{
if (!loaded) {
throw new IllegalOperationError("The SWF library isn't loaded");
}
return loader.contentLoaderInfo.applicationDomain.getDefinition(className) as Class;
}
private function completeHandler(event:Event):void
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, completeHandler);
loaded = true;
dispatchEvent(new Event(Event.COMPLETE));
}
}
相關問題
- 1. 將swc文件轉換爲swf文件?
- 2. 如何將swf轉換爲swc?
- 3. 如何將mxml文件轉換爲compoent,即.swc文件
- 4. 將.cptx文件轉換爲.swf文件
- 5. 是否有任何庫用於生成Flash SWF文件或將SWF文件轉換爲swf
- 6. 如何將dwg文件轉換爲flash(swf)文件?
- 7. 將SWF文件轉換爲HTML 5
- 8. 將vob文件轉換爲swf和flv
- 9. 將SWF轉換爲GIF文件
- 10. 將Office文件轉換爲swf(Flash)
- 11. 在「編譯」Flash Builder應用程序時,.swc文件如何轉換爲.swf文件?
- 12. 如何將WAV文件轉換爲頻域以使用FFT庫
- 13. 有沒有辦法將swf轉換爲.abc文件?
- 14. 如何將swf文件轉換爲fla格式?
- 15. 將AS3轉換爲FLA以生成SWF
- 16. 將ActionScript 2 SWF轉換爲ActionScript 3 SWF文件(代碼可以被剝離)
- 17. 將SWF轉換爲XAML
- 18. 將SWF轉換爲位圖
- 19. 將Swf轉換爲圖像
- 20. 將SWF轉換爲PNG
- 21. 將PDF轉換爲SWF
- 22. 將ttf轉換爲swf
- 23. 如何將現有的xcode項目轉換爲靜態庫
- 24. 使用c將flv文件轉換爲swf#
- 25. 使用ffmpeg將swf文件轉換爲mp4
- 26. 將WPF庫轉換爲WinRT庫文件
- 27. 如何將.tlb文件轉換爲標題和實現文件?
- 28. 如何將帶有Document類的雙文件預加載器和遊戲swf轉換爲單個swf?
- 29. 如何將word文檔轉換爲swf查看器程序
- 30. C#將csv轉換爲xls(使用現有的csv文件)
您可以將代碼編譯爲SWC而不是SWF! – Florent
@Florent我寫道,我無法從源代碼重新編譯SWF。我甚至反編譯它,並嘗試重新編譯,但反編譯器生成不可編譯的代碼。 – jabal
你的意思是你既沒有源代碼也沒有FLA? – Florent