Entries

AVM2にAVM1のSWFを強引にロードするやり方

Flash8でコンパイルしたSWFをAS3コンテンツからロードすると、ムービーはAVM1によって再生されてしまいAS3からアクセスできない件について。

以下の2つの条件下で、AS2のSWFを強引にAS3のSWFでロードしてMovieClipサブクラスとして使用、全プロパティ、子MCにアクセスする方法を発見。できるらしいって噂は聞いてたけどホントにでけた。

・無圧縮形式でパブリッシュしていること
・ムービー内にAS2で書かれたコードがないこと

まずAS2のSWFをURLLoaderでバイナリ形式でロードする。

・ByteArrayの[3]番目のインデックスを9に書き換える。
・ByteArrayのインデックス20~30あたりのどっかに、01, 00, 44, 11, 00 という順番にintが並んでいる場所があるので見つける。
01, 00, 44, 11, 08 に書き換える。

Loaderで書き換えたバイトコードを読み込む。
これでおk。

<追記>
be interactive情報で、最初の01は単なる総フレーム数とのこと
修正しました。