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くらいずれるのは普通に起こる。
何か間違ってたら教えて下さい。