0

私はムービークリップを持っています (その中に複数のムービークリップがあります)。私の要件は、MouseEvent.CLICKイベントを親ムービークリップに追加することです。視覚的に不透明な (アルファ = 100%) 領域がクリックされた場合にのみイベント ( MouseEvent.CLICK) がフラッシュによってディスパッチされ、それ以外の場合は無視されるようにします。

私が現在行っている回避策はalpha = 0.05、マウスカーソルをたどる円を作成Event.ENTER_FRAMEし、ヒットテストに続いてヒットテストを行うことですPixelPerfectCollisionDetection(私がグーグルコードで賞賛する1人のgr8男に感謝します:))

要するに、ムービークリップの視覚的に不透明な領域をクリックしたときにのみ Flashディスパッチを MouseEvent にできるかどうかを知る必要があります。 anywhere in the bounding box region.

ありがとう、

ヴィシュヌ アジット

4

1 に答える 1

2

私はこの解決策を得ました。しかし、それはまったく完璧ではありません.毎回bitmapDataあなたの新しいオブジェクトを作成するからですMovieClip:

myButton.addEventListener( MouseEvent.CLICK, clickFunction);

private function clickFunction(e:MouseEvent) {
    if(pixelIsVisible(e.currentTarget, e.currentTarget.mouseX, e.currentTarget.mouseY)) {
        //DoSomething
    }
}   

private function pixelIsVisible(target:*, xPos:int, yPos:int):Boolean {
    var bmp:BitmapData = new BitmapData( target.width, target.height, false );
    bmp.draw( target as MovieClip );
    var pixelValue = bmp.getPixel( xPos, yPos);

    //Dispose bitmapData to free memory
    bmp.dispose();

    var alphaValue:uint = pixelValue >> 24 & 0xFF;
    //alphaValue is from 0 to 255
    if(alphaValue >= 255) return true;
    else false;
}
于 2012-06-22T08:43:02.000 に答える