2012-01-25 58 views
0

我們想編寫一些自動化的過程來從安靜的幾個SWF(Flash ActionScript 3)文件中提取數據。解析Linux中的SWF文件

除此之外,我們希望它作爲我們的自動部署腳本(用Ant編寫,在Linux上運行)的一部分自動運行。

你們知道任何SWF解析工具可以檢查實例數據 - 每幀嗎? (就我在Google看到的,Adobe AIR不會在console-linux上運行)

想法? :)

+0

您能否正確地從SWF擴展您想要的內容? (Assets?Metadata?) - 我不太清楚「instance-data-per-frame」是什麼意思 – Cameron

+0

基本上,我們在SWF中存儲了定義對象尺寸的各種對象。因此,爲了將其轉換爲AS3代碼,我們將查看該框架上的實例(子代),檢查它們的類型/位置,並基於此計算尺寸。因此,從原始意義上講,我們需要訪問每幀的childrenCount/Positions/Type。那有意義嗎? – Alon

回答

0

使用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號稱允許從命令行運行動作。不幸的是,我對這個工具沒有經驗。