これが私がやろうとしていることです:
- 1 つの byteArray (colorsByteArray) は、「getPixels」メソッドで作成した色の値を保持します。
- 画面上のすべてのピクセルに対して計算を行い、それに応じて、colorsByteArray 内の適切な色の値を取得するために使用するランクを取得します。
- 最後に、取得したばかりの色を 2 番目の byteArray (pixelsByteArray) 内に書き込みます。次に、「setPixels」メソッドを使用して、この byteArray を「描画」します。
問題は、ループ内のすべてのピクセルに対して単に「setPixel」を記述した場合と同じ画像が見つからないことです。私が得た画像は、2 行のうち 1 行が欠けており、水平方向に 3 回繰り返されているようなものです。もちろん、2番目のbyteArrayから何か間違ったことを書いている(または読んでいる)に違いないと思いますが、誰かが私が間違っていることを説明してもらえますか? または、私の努力が実際に価値があるとしても:-)これまでのところ、このようなものはまったく見つかりませんでした...ありがとう!
物事を明確にするための私のコードの一部を次に示します。
colorsByteArray = bitmDext.getPixels(new Rectangle(0, 0, myShadeBMD.width, 1));
canvas.lock();
for(var i:int = 0; i < STAGE_WIDTH; i++)
{
for(var j:int = 0; j < STAGE_HEIGHT; j++)
{
//make some calculation on each pixel to get the 'colorRank' uint value
colorsByteArray.position = colorRank * 4;//unsigned int is 32 bytes, representing 4 slots of a byteArray
var colorValue:uint = colorsByteArray.readUnsignedInt();
//canvas.setPixel(i, j, colorValue);//works just fine
pixelsByteArray.writeUnsignedInt(colorValue);
}
}
pixelsByteArray.position = 0;
var myRect:Rectangle = new Rectangle(0, 0, STAGE_WIDTH, STAGE_HEIGHT);
canvas.setPixels(myRect, pixelsByteArray);
canvas.unlock();
役立つかもしれない写真を追加しました: http://www.oghel.com/pictures/stackOverflow/example3 予想される部分は右側にあり、間違った部分は左側にあります。