0

swf ファイルを別の swf にロードしてから、最初のファイルからアセットを抽出しようとしています。

両方の swf ファイルは、OpenFL (FlashDevelop でコンパイル) を使用して作成されています。

外部の swf を簡単に読み込んで、SWF オブジェクト (haxelib swf ライブラリ) に変換できます。

しかし、SWF から画像を抽出することはできませんか?

var req:URLRequest = new URLRequest('TestSwf.swf');
var loader:URLLoader = new URLLoader(); 
loader.addEventListener(Event.COMPLETE, function(e:Event) 
{
    var byteArray:ByteArray = cast(e.target, URLLoader).data;
    trace(['ByteArray length', byteArray.length]);  
    trace(byteArray.length);

    var slide_swf:SWF = new SWF (byteArray);
    trace(slide_swf.hasSymbol("__ASSET__assets_img_0002_png"));
    var sym:Dynamic = slide_swf.data.getCharacter(slide_swf.symbols.get("__ASSET__assets_img_0002_png"));
    trace(sym);

    var bmpd:BitmapData = slide_swf.getBitmapData("__ASSET__assets_img_0002_png");
    trace(bmpd);
    var bmp:Bitmap = new Bitmap(bmpd);
    trace(bmp.width);
    this.addChild(bmp);
});
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.load(req);

これを実行した場合の出力は次のとおりです。

Main.hx:42: [ByteArray length,738913]
Main.hx:43: 738913
Main.hx:46: true
Main.hx:48: [00:DefineBitsJPEG2] ID: 1002, Type: PNG, BitmapLength: 531065
Main.hx:50: null
Main.hx:57: 0

sym タイプは、SWF が Bitmap に変換できない DefineBitsJPEG2 であることがわかります。

では、SWF ファイルからアセットを抽出するにはどうすればよいでしょうか。それとも、私はこれを完全に間違った方法で行っていますか??

どんな助けでも大歓迎です!!

4

1 に答える 1