2011-08-23 57 views
2

我工作的一個項目,我需要打開一個swf文件,改變一個swf標籤的內容,而不觸及其他標記是否有任何可以編輯一個swf標籤的SWF庫?

我已經試過「SwfDotNet庫」,但它不輸出未知標籤。例如,如果遇到「EXPORTASSETS」標記,則它不會將其寫入輸出SWF,因爲該庫是舊的並且支持最高爲swf版本7,並且標記爲新。

有沒有這種能力的圖書館?

+0

您的項目中使用的語言是什麼? – Kodiak

+0

在閃光燈我有AS2和AS3 swf文件。編輯swf的程序可以使用任何語言。 –

回答

1

我有AS3(柔性)解決方案,可以在運行時的工作:

  1. 負載所需的swf作爲通過的URLLoader字節組,通過https://github.com/claus/as3swf UTIL
  2. 解析瑞士法郎。
  3. 對標籤進行了更改。
  4. 生成新的字節數組並通過通用SWFLoader加載它。 我用這種方式在運行時更改swf版本。

也看看這個工具對於SWF內容的操作:

2

這可以使用SWFWire使用AsyncSWFReaderFiltered class完成。例如,如果你想只讀ShowFrame標籤:

var reader:AsyncSWFReaderFiltered = new AsyncSWFReaderFiltered(); 
reader.includedTags[1] = true; 
reader.addEventListener(AsyncSWFReaderEvent.TAG_READ, function(ev:AsyncSWFReaderEvent):void 
{ 
    trace('Done reading tag #'+ev.result.swf.tags.length); 
}); 
reader.read(); 

的其他標籤將顯示爲UnknownTag,這只是一個ByteArray容器。

+0

...寫什麼?我檢查了這些例子,並且例如有一個SWF10Writer。我怎樣才能在沒有任何改變的情況下巧妙地編寫currentReadResult **。 (我不想指定Flash版本或其他任何東西) –

+0

使用[將SWF寫入ByteArray](https://github.com/magicalhobo/SWFWire/wiki/Sample-Code)示例。您不必指定Flash版本。 –