Hatena::ブログ(Diary)

flashrod このページをアンテナに追加 RSSフィード

2006-09-02

あのぅ、あ、圧縮してください! 10:57  あのぅ、あ、圧縮してください!を含むブックマーク

flash.utils.ByteArray には uncompress() がある。埋め込みデータを圧縮しとけばswfファイルサイズが小さくて済む。

        [Embed(source='a.z', mimeType='application/octet-stream')]
            private static const Z0:Class;

        var a:ByteArray = new Z0() as ByteArray;
        a.uncompress();

圧縮済みデータはByteArrayのcompress()で作れる。でもデータファイル作成のためにFlash Playerをうごかすのはいかがなものかと。ファイル作るのも面倒そうだし。

zlibを使ったやつならなんでもいいようだけど、やっぱりFlex2開発環境に統合できるのが良い。ちょっと実験したところ、java.util.zip.DeflaterOutputStream でいいみたい。 GZIPOutputStream や ZipOutputStream ではだめだった。

        OutputStream out = new BufferedOutputStream(new FileOutputStream("a.z"));
        out = new DeflaterOutputStream(out);
        // ここで out.write(バイト列)
        out.close();

これで前日の地図データは18496バイトから2278バイトに圧縮できた。圧縮美!

J2EEサーバで圧縮してFlash Playerで展開なんてのが正しい使い方かもしれない。

arkwarkw 2006/09/04 12:08 はじめまして。
S2Flex2で、javaで、ByteArrayの実装をしていますので、よかったら使ってみて下さい。