我們想編寫一些自動化的過程來從安靜的幾個SWF(Flash ActionScript 3)文件中提取數據。解析Linux中的SWF文件
除此之外,我們希望它作爲我們的自動部署腳本(用Ant編寫,在Linux上運行)的一部分自動運行。
你們知道任何SWF解析工具可以檢查實例數據 - 每幀嗎? (就我在Google看到的,Adobe AIR不會在console-linux上運行)
想法? :)
我們想編寫一些自動化的過程來從安靜的幾個SWF(Flash ActionScript 3)文件中提取數據。解析Linux中的SWF文件
除此之外,我們希望它作爲我們的自動部署腳本(用Ant編寫,在Linux上運行)的一部分自動運行。
你們知道任何SWF解析工具可以檢查實例數據 - 每幀嗎? (就我在Google看到的,Adobe AIR不會在console-linux上運行)
想法? :)
使用Adobe AIR
我們已經使用Adobe AIR SDK做到了這一點。 AIR SDK versions 2.6 and earlier支持Linux。
您不需要一路打包您的應用程序的Linux桌面,只需使用adl工具來運行您的應用程序。
首先,寫一個ActionScript應用程序加載和從您的SWF文件解析數據並將其編譯爲loader_app.swf
然後創建一個應用程序的XML描述符,如:
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/2.6">
<id>HelloWorld</id>
<versionNumber>0.0.1</versionNumber>
<filename>HelloWorld</filename>
<initialWindow>
<content>loader_app.swf</content>
</initialWindow>
<supportedProfiles>extendedDesktop</supportedProfiles>
</application>
運行此應用程序在Linux下,只需運行:
> /<path_to_air_sdk>/bin/adl app.xml
注:
我依稀記得可以在無頭模式下運行空氣,但是我們的解決方法是在X顯示器上運行虛擬VNC服務器:99並設置DISPLAY =:99讓adl使用該X服務器,這樣我們可以從cron運行它。
如果您希望AIR應用的多個實例同時運行,則需要更改app.xml中的字段。 AIR僅爲每個ID創建一個實例。
讓我知道你是否想要澄清任何步驟。
沒有Adobe AIR的
另一種可能性是使用redtaramin號稱允許從命令行運行動作。不幸的是,我對這個工具沒有經驗。
您能否正確地從SWF擴展您想要的內容? (Assets?Metadata?) - 我不太清楚「instance-data-per-frame」是什麼意思 – Cameron
基本上,我們在SWF中存儲了定義對象尺寸的各種對象。因此,爲了將其轉換爲AS3代碼,我們將查看該框架上的實例(子代),檢查它們的類型/位置,並基於此計算尺寸。因此,從原始意義上講,我們需要訪問每幀的childrenCount/Positions/Type。那有意義嗎? – Alon