AIR对Mobile设备位图取色的问题

AIR对Mobile设备位图取色的问题

在网页游戏开发中,我经常使用bitmapData.getPixel32来获得单击的部位的透明度值,以此来确定是否交互。

在PC平台中,这个用法是很靠谱的:

1public function checkOpaque($x:Number,$y:Number):Boolean
2{
3	//如果没有图像,当然是透明的
4	if(!this.bitmapData) return false;
5	var __argb:uint = this.bitmapData.getPixel32($x,$y);
6	//否则就判断透明度
7	return  (__argb>>24&0xFF) > 0;
8}

但是,到了Mobile平台上,这个方法就有问题,使用getPixel32获得透明部分的像素值,得到的是16777216!

这个值其实是2的24次方。也就是说,在Mobile平台上,getPixel32只能支持到24bit色彩!

那么,是不是我的设置不正确呢?在AIR项目配置文件中,可以设置colorDepth,默认值为16bit,将其设置为32bit,还是没有作用。

所以只能把判断函数改成这样了:

 1public function checkOpaque($x:Number,$y:Number):Boolean
 2{
 3	//如果没有图像,当然是透明的
 4	if(!this.bitmapData) return false;
 5	var __argb:uint = this.bitmapData.getPixel32($x,$y);
 6	trace('单击的像素的颜色:', __argb.toString(16));
 7	//手机上可能最大只能支持到24bit颜色,所以当颜色等于24bit颜色的最大值的时候,直接认为像素是透明的
 8	if(__argb == 0x1000000) return false;
 9	//否则就判断透明度
10	return  (__argb>>24&0xFF) > 0;
11}