2

次のコードを、block.mouseEnabled = true で 1 回、block.mouseEnabled = false でもう一度実行し、各実行中にブロックを 1 回クリックします。

var block:Sprite = new Sprite();
block.name = "block";
with(block.graphics){beginFill(0x000000,1);moveTo(0,0);lineTo(100,0);lineTo(100,100);lineTo(0,100);lineTo(0,0);endFill();}
block.mouseEnabled = true; //change to false to see how event target skips root
addChild(block)
stage.addEventListener( MouseEvent.MOUSE_DOWN, mouse_down, false, 0, true );
function mouse_down( e:MouseEvent ):void{trace( e.target );}

「ルート」がターゲットとしてスキップされるのはなぜですか? これは設計によるものですか?この異常の設計上の理由は何ですか?

これは、子オブジェクトの mouseEnabled が false に設定されている場合、子領域がクリックされたときに親がターゲットになるという通常のパターンからの明確なブレークであるためです。

ルートは単にイベント キャプチャ/ターゲット/バブリング ラウンド トリップの非参加エンドポイントである可能性があり、そこに到達したものはすべてルートではなくステージに適用されます。

4

1 に答える 1

1

グラフィックスのストロークとベクトル塗りつぶしはインタラクティブではなく、インタラクティブなイベントをキャッチできません。U は、graphics.beginBitmapFill メソッドを使用するか、Bitmap (またはその他) を子として追加できます。

于 2012-04-06T10:21:58.880 に答える