我正在为我正在制作的游戏创建“地图”,并且它在< = Android 2.1上工作正常,但2.2会导致问题。
我不确定这是否是一种常用的方法,所以我会解释我在做什么。首先,我绘制用户将要看到的地图然后我绘制一个相同大小的地图,只有白色和粉红色(0xffFF006E)。我绘制粉红色的任何地方都是一个区域/边界,我不希望玩家能够进入/交叉。
因此,在游戏中,常规地图不断被绘制,粉红色的“边框图”被加载到位图中(但从未实际绘制过)。要查看玩家是否尝试越过边界,我会检查玩家的x,y pos与边框图:
private boolean overBorder(int x, int y){
//The int 'COLOR_border' is predefined as 0xffFF006E
if(mPlayerDirection == UP && mMapBorders.getPixel(x, y-mPlayerHeight/2) == COLOR_border)return true;
if(mPlayerDirection == DOWN && mMapBorders.getPixel(x, y+mPlayerHeight/2) == COLOR_border)return true;
if(mPlayerDirection == LEFT && mMapBorders.getPixel(x-mPlayerWidth/2, y) == COLOR_border)return true;
if(mPlayerDirection == RIGHT && mMapBorders.getPixel(x+mPlayerWidth/2, y) == COLOR_border)return true;
//If those fail, false
return false;
}
如果该代码返回true,我会停止播放器。就像我说的那样,这在2.2之前非常有效。如果有人对如何修复2.2兼容性有任何见解,我将非常感激。
答案 0 :(得分:0)
可能与http://code.google.com/p/android/issues/detail?id=4710有关,并且颜色被报告为预乘或后乘。你确定你的位图有alpha通道吗?从那篇文章:
我想我可能找到了答案 我自己的问题。我只试过了 有一些测试代码,但似乎它 可能是解决方案。我在打电话 BitmapFactory.decodeResource(资源 res,int id)加载位图。一个电话 到Bitmap.hasAlpha()返回false。 所以,我进入了我的位图 Paint.NET,删除了一些颜色,和 重新保存。现在是hasAlpha()方法 返回true。 getPixel()和 setPixel()方法似乎返回 价值更像他们在1.6中所做的那样。所以, 我认为问题不在于 2.0,但实际上是1.6 - 因为它认为位图有一个 透明度颜色设置时没有。 我今晚要测试并报告我的 的调查结果。