我有一個位圖數據,其中包含兩種顏色,黑色和白色。現在黑色區域是透明的,白色區域是可見的。現在圖像只能在白色區域點擊,而不能在黑色透明區域點擊。我們應該怎麼做?如何檢索一個特定顏色的位圖數據的一部分
PS:白色區域不在正常位置,我的意思是它們位於隨機位置。
我有一個位圖數據,其中包含兩種顏色,黑色和白色。現在黑色區域是透明的,白色區域是可見的。現在圖像只能在白色區域點擊,而不能在黑色透明區域點擊。我們應該怎麼做?如何檢索一個特定顏色的位圖數據的一部分
PS:白色區域不在正常位置,我的意思是它們位於隨機位置。
//add listener for mouse clicks
stage.addEventListener(MouseEvent.CLICK, eventHandler);
function eventHandler(event:MouseEvent):void
{
//1x1 bitmapData to store snapshot
var bmd:BitmapData = new BitmapData(1, 1);
//matrix object to 'move' stage so that pixel under mouse is effectively at 0,0
var matrix:Matrix = new Matrix();
//'move' stage according to mouse x,y values
matrix.translate(-event.stageX, -event.stageY);
//take snapshot of stage
bmd.draw(stage, matrix);
//get colour from snapshot data
var pixel:uint = bmd.getPixel(0, 0);
//trace result
trace("colour = "+pixel.toString(16));
}
從http://blog.leeburrows.com/2011/06/get-pixel-colour-below-mouse-pointer/
編輯拍攝,因爲我有時間:
所以你的情況,而不是:
trace("colour = "+pixel.toString(16));
你可以使用:
if(pixel.toString(16) == "ffffff") // if clicked pixel is white
{
//do something
}
Sam的答案很棒,但既然你說你知道所討論的像素是位圖數據的一部分,你可以跳過拍攝舞臺的快照,而只是直接檢查bitmapdata。我認爲這可能是簡單的:
stage.addEventListener(MouseEvent.CLICK, eventHandler);
function eventHandler(event:MouseEvent):void
{
if (myBitmapData.getPixel(event.stageX, event.stageY) == 0xffffff)
{
// do something
}
}
此外,如果你想利用阿爾法考慮您將要使用getPixel32()代替getPixel()。