做雷霆战机的时候不知道从哪里看到错误的转换算法代码,图片透明的过头了,不需要透明化的颜色也透明了,学习了JAVA位移操作后发现是算法有bug。
原代码:
public static Image createAlphaImage(Image img, int alphaColor) {
int w = img.getWidth();
int h = img.getHeight();
int[] imgData = new int[w * h];
img.getRGB(imgData, 0, w, 0, 0, w, h);
for (int i = 0; i < imgData.length; ++i) {
if ((imgData[i] & alphaColor) == alphaColor) {
imgData[i] = imgData[i] & alphaColor;
}
}
return Image.createRGBImage(imgData, w, h, true);
}
for 循环里面应该是:
if ((imgData[i] & 0xFFFFFF) == alphaColor) {
imgData[i] = imgData[i] & alphaColor;
}
这样就对了。
如果alphaColor是全透明的话,直接imgData[i] = alphaColor;就行了。
学习到了java位移操作~~
本文讨论了在使用Java进行游戏开发时,遇到的关于图像透明化算法的问题,通过学习位移操作,发现了算法中的bug,并提供了解决方案。
1247

被折叠的 条评论
为什么被折叠?



