0

これが私がやろうとしていることです:

  • 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 予想される部分は右側にあり、間違った部分は左側にあります。

4

0 に答える 0