1

我有一个以随机和复杂的方式绘制的精灵。像素要么是透明的,要么是不透明的。现在我需要检查像素new Point(10, -5)是否透明。

我怎样才能做到这一点 ?


  • 这不适用于碰撞检测。
  • 我还绘制了精灵图形的负区域。它不是居中的。

解决方案:

主要问题是在负区绘图。我自己想通了:

var bitmapData: BitmapData = new BitmapData(sprite.width, sprite.height, true, 0x0);
var rect: Rectangle = sprite.getBounds(sprite);
var mat: Matrix = new Matrix();
mat.translate(-rect.left, -rect.top);
bitmapData.draw(sprite, mat);
bitmapData.getPixel32(xCoordToTest - rect.left, yCoordToTest - rect.top);
// etc
4

2 回答 2

0

Create new BitmapData object and draw your sprite onto it. Then check desired BitmapData pixel.

var bitmapData:BitmapData = new BitmapData(mySprite.width,mySprite.height,true,0x00000000);
bitmapData.draw(mySprite);
bitmapData.getPixel32(10,5);
于 2013-05-09T13:58:33.887 回答
0

就像 SzRaPnEL 所说,将您的精灵绘制到一个 BitmapData 对象中,并将第三个参数设置为 true(启用透明度)。然后...

var pixelValue:uint = bitmapData.getPixel32(xCoordToTest, yCoordToTest);
var alphaValue:uint = pixelValue >> 24 & 0xFF;

根据 BitmapData 在线文档,这应该可以工作...... http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#getPixel32()

于 2013-05-09T14:45:41.493 回答