2012-04-30 39 views
1

我有一個位圖數據,其中包含兩種顏色,黑色和白色。現在黑色區域是透明的,白色區域是可見的。現在圖像只能在白色區域點擊,而不能在黑色透明區域點擊。我們應該怎麼做?如何檢索一個特定顏色的位圖數據的一部分

PS:白色區域不在正常位置,我的意思是它們位於隨機位置。

回答

1
//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 
} 
1

Sam的答案很棒,但既然你說你知道所討論的像素是位圖數據的一部分,你可以跳過拍攝舞臺的快照,而只是直接檢查bitmapdata。我認爲這可能是簡單的:

stage.addEventListener(MouseEvent.CLICK, eventHandler); 

function eventHandler(event:MouseEvent):void 
{ 
    if (myBitmapData.getPixel(event.stageX, event.stageY) == 0xffffff) 
    { 
     // do something 
    } 
} 

此外,如果你想利用阿爾法考慮您將要使用getPixel32()代替getPixel()。

相關問題