0

这是我正在尝试做的事情:

  • 一个 byteArray (colorsByteArray) 保存我使用“getPixels”方法创建的颜色值;
  • 对于屏幕上的每个像素,我都会进行计算,并根据计算得到一个等级,用于在 colorsByteArray 中检索正确的颜色值;
  • 最后,我在第二个 byteArray (pixelsByteArray) 中写入刚刚检索到的颜色。然后我使用“setPixels”方法“绘制”这个 byteArray。

问题是我没有找到相同的图像,就好像我只是为循环中的每个像素写了一个“setPixel”一样。我得到的图像缺少两行中的一行,并且水平重复了三遍。当然我想我一定是从我的第二个 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