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は単なる総フレーム数とのこと。
修正しました。