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

Just like SzRaPnEL says, draw your sprite into a BitmapData object with the 3rd parameter set to true (enabling transparency). Then...

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

According to the BitmapData online docs, that should work... http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#getPixel32()

于 2013-05-09T14:45:41.493 に答える
0

新しい BitmapData オブジェクトを作成し、その上にスプライトを描画します。次に、目的の BitmapData ピクセルを確認します。

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