« 2009年06月 | メイン | 2009年10月 »

2009年07月 アーカイブ

2009年07月07日

七夕なので星空つくってみた

久しぶりにわんだふるー

PhotoShopのチュートリアル参考にしました。
A Slick Supernatural Text Effect - Psdtuts+
http://psd.tutsplus.com/text-effects-tutorials/a-slick-supernatural-text-effect/

ActionScript 天下一武道会 !!

祭りだ!!

checkmate | wonderfl build flash online
http://checkmate.wonderfl.net/

カヤックさんとアドビさんが、面白いこと始めたみたいです。
wonderflをつかったActionScriptの天下一武道会!

お題に対してforkして作品を投稿していくみたいですね。

これはASやる人はみんな参加しないと!

2009年07月31日

AS3でデータ圧縮するならZipのライブラリよりByteArray.compress

Flashで大きめのデータを扱うときに、圧縮したいことなんかがあるんだけど、とりあえず思いつくのがZIPのライブラリ。以前ちょっと紹介したりしました。

ActionScript 3.0 でZIPの圧縮と解凍 (Unknown Quality)
http://un-q.net/2009/06/actionscript_30_zip_as3.html

上のエントリーにも書いたんだけど、解凍が結構時間かかる。そんなときはByteArrayクラスのcompressメソッドがおすすめ。

こんな風に使えます。
var data:ByteArray = new ByteArray();
data.writeUTF("hogehogehoegho.....");
data.compress() // 圧縮
data.uncompress() // 解凍

たとえばcollada形式の3Dモデルデータを読み込むときなんかに使えます。colladaはXML形式のデータなので圧縮すると結構容量が減ります。まずcolladaのXMLをFlashに読み込みByteArrayにしてcompressして、それをファイルとして保存してしまいます。コンテンツではその保存したデータを読み込んでuncompressして使う感じです。

こんな感じで読み込み用のデータを作ります。
// URLLoaderでcolladaのデータを読み込む
// ここはURLLoaderのEvent.COMPLETEハンドラ内
// _loaderがURLLoader
var b:ByteArray = new ByteArray();
b.writeUTFBytes(_loader.data); // _loader.dataにcolladaのXMLデータ
b.compress();
stage.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
    var file:FileReference = new FileReference();
    file.save(b, "filename.dat");
});

ちなみに7MBほどのデータを処理したときの結果。解凍の速度が圧倒的に違います。
※ZIPのライブラリはnochump.util.zipの物を使ってます。
start zip compress
end zip compress 1877ms

start zip uncompress
end zip uncompress 3736ms

start ByteArray compress
end ByteArray compress 1178ms

start ByteArray uncompress
end ByteArray uncompress 36ms
画像のデータとかはあまり圧縮できないですね。ZIPでもそれは同じだと思います。あと圧縮率はテキストの場合ZIPでもByteArrayのcompressでも大きな差はありませんでした。

[追記]
ZIP圧縮と圧縮率が変わらないのは、FlashPlayerでのcompressはzlibのアルゴリズムを使ってるからです。AIRだと圧縮のアルゴリズムを変更することが出来ます。詳しくはドキュメント読んでください。
ByteArray - ActionScript 3.0 言語およびコンポーネントリファレンス

About 2009年07月

2009年07月にブログ「Unknown Quality」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2009年06月です。

次のアーカイブは2009年10月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。