这是我正在尝试做的事情:
- 一个 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 预期的部分在右边,错误的部分在左边。