2013-05-09 56 views
1

我有一個隨機和複雜的方式繪製的精靈。像素不是透明的就是不透明。現在我需要檢查像素new Point(10, -5)是否透明。Actionscript 3 - 如何檢查雪碧的隨機像素

我該怎麼做?


  • 這不是碰撞檢測。
  • 我也畫在精靈圖形的負面區域。它不居中。

解決方案:

的主要問題是在負值區繪圖。我自己想出來的:

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 

回答

0

創建新的BitmapData對象並將其繪製到它上面。然後檢查所需的BitmapData像素。

var bitmapData:BitmapData = new BitmapData(mySprite.width,mySprite.height,true,0x00000000); 
bitmapData.draw(mySprite); 
bitmapData.getPixel32(10,5); 
0

就像SzRaPnEL說,繪製你的精靈與設置爲true(啓用透明)的第三個參數的BitmapData對象。 然後...

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()

+0

你都錯過了主要問題。 – n4pgamer 2013-05-09 16:01:05