1

その上にオブジェクトが飛んでいる背景のムービークリップがあります(これはゲームです)。さて、上に横たわっている物体が当たっていないときに、ムービークリップに穴を開けたいと思います。バックグラウンドmcと子mcsの両方でmouseEnabledをいじっていましたが、成功しませんでした。これらの2つのイベント(バックグラウンドヒットとフライングオブジェクトヒット)を区別するための最良の方法は何ですか?

4

1 に答える 1

1

背景オブジェクトと飛行オブジェクトの両方の共通の親でマウスイベントをリッスンしている場合は、event.targetプロパティを使用して、どのアイテムがイベントをディスパッチしたかを確認できます。

表示オブジェクトのmouseEnabledプロパティをfalseに設定すると、マウスイベントがディスパッチされなくなりますが、子がディスパッチすることはできません。 mouseChildren = falseそれを達成します。

したがって、飛んでいるものと背景で、それらのmouseChildrenプロパティをfalseに設定した場合、それらをクリックすると、ターゲットプロパティは常にオブジェクト自体になります。(それ以外の場合、ターゲットは子である可能性があります)。

したがって、イベントハンドラは次のようになります。

function(e:Event):void {
    if(e.target == myBackgroundInstance){
        //do something with the background
    }

    if(e.target is myCommonFlyingThingClass){
        var flyingThing:myCommonFlyingThingClass = e.target as myCommonFlyingThingClass;
        //do something with the flying thing
    }
}
于 2012-09-14T17:55:34.300 に答える