アーカイバとかやってみた
外部ファイルをロードする場合、ゲームをローカルで遊んでもらおうとすると、素材丸見えになってしまいます。
すべてswfに埋め込んでしまえばいいのですが、コンパイルが長くなるようです。
完成版のコンパイルで埋め込めばいいのですが。
で、前からちょっとやってみたかった、素材をひとまとめにして読み込んで、
プログラム中で分解するということをやってみました。
ファイルの仕様を晒したら意味が無いので、ソース公開は無いですが、バイナリいじりメモを。
- ByteArrayを使う。
- 文字列関連の処理は、エンコード関連をちゃんとせんといかん。
- Loader.loadBytesで、バイナリからswf、画像ファイルを復元できる。
このLoader.loadBytesなんですが、例えば画像ファイルのバイナリデータを読み込ませて、BitmapDataをとってこようとした場合、
Bitmap(Loader.content).bitmapDataでいけると思っていましたが、ちょっと気をつけなければならない様子。
private var _loader:Loader; private function init():void { _loader = new Loader(); _loader.loadBytes(byteArray); _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadByteComplete); } /** * バイナリデータロード完了イベント * * @param event イベント */ private function onLoadByteComplete(event:Event):void { trace(Bitmap(_loader.content).bitmapData); }
loadBytesをした直後だと、Loader.contentにはまだnullが入っていて、COMPLETEイベント以降じゃないとデータを取得できない模様。
そういうものなんでしょうか、イベントを間に噛ませないといけないのはちょっとシンドイなぁ。