AS3のBitmapDataに関するメモ

BitmapDataには最大サイズがある

これは仕様変更を引き起こしかねない重要な制約なため、設計時に知っておく必要がある。

公式docによると、

AIR 1.5 および Flash Player 10 では、BitmapData オブジェクトの最大サイズは幅または高さが 8,192 ピクセルであり、ピクセルの合計数が 16,777,216 ピクセルを超えてはなりません(そのため、BitmapData オブジェクトの幅が 8,192 ピクセルである場合、高さは 2,048 ピクセルまでしか設定できません)。Flash Player 9 以前および AIR 1.1 以前では、高さが 2,880 ピクセル以下、幅が 2,880 以下に制限されます。

flashplayer9なら2880px以下ということで、ものによっては簡単に突破してしまう。

BitmapDataの初期化速度に関するメモ

ゲームなんかではよく、毎フレームの最初にBitmapDataを白紙に戻すという処理をやると思うけど、今まで、

bd.fillRect(bd.rect, 0x0);

とやっていたが、割とハイスペックなPCでもけっこうCPUを食ってた。
今日試しに

bd = new BitmapData(bd.width, bd.height, true, 0x0);

と書くと、ものすごく軽くなって驚いた。
※実験条件【width:800px,height:600pxのBitmapDataに関して20FPSの速度】

ちなみに、画像の描画に関しては、bd.copyPixels()< bd.draw()の順で重い。

getPixel()の値は正確でない

setPixel()だったかも。
いずれにせよ。数値が0x1くらいずれるのは普通に起こる。



何か間違ってたら教えて下さい。