游戏编程 - &逻辑运算符和.getRGB()方法

时间:2014-07-27 10:30:52

标签: java

我有两个与以下代码有关的问题:

pixels = image.getRGB(0, 0, width, height, null, 0, width);

for(int i = 0; i < pixels.length; i++)
{
    pixels[i] = (pixels[i] & 0xff) / 64;
}

我的第一个问题是最后一个参数(设置为宽度)在.getRGB方法中做了什么。第二个是(pixels[i] & 0xff) / 64做了什么,因为我从未遇到过&运算符,也不知道0xff的含义,但我认为它与改变它有关。 RGB值。根据我目前正在阅读的一本书,这是一个2D游戏,我正在尝试制作。

以下是完整代码:http://pastebin.com/fPjvrFWG

谢谢!

1 个答案:

答案 0 :(得分:0)

有关最终的scansize参数,请参阅Javadocs

  

使用图像中指定的坐标(x,y),可以通过以下方式访问ARGB像素:

     

pixel = rgbArray[offset + (y-startY)*scansize + (x-startX)];

这样做的目的是允许目标数组的宽度与提取的部分不同。

& 0xff运算符只提取ARGB像素值的蓝色分量,因为像素中的位是这样排列的:

AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB

所以&#34; anding&#34;与0xff生成:

00000000 00000000 00000000 BBBBBBBB

然后,64除法除了该蓝色值的两个最高有效位之外,即0-63变为0,64-127变为1,128-191变为2,192-255变为3。