説明
オブジェクトの子が、マウスに対応するかどうかを決めます。オブジェクトがマウスに対応すると、ユーザーはマウスを使ってオブジェクトとのインタラクションが可能になります。デフォルト値はtrueです。
このプロパティは、(SimpleButtonクラスを使わずに)Spriteクラスのインスタンスでボタンをつくるときに役立ちます。Spriteインスタンスを用いてボタンを作成すれば、ボタンに何かをつけ加えるとき、addChild()メソッドによりSpriteインスタンスを追加する方法が採れます[*1]。しかし、この処理はマウスイベントについて、予期しない動作を招くおそれがあります。親インスタンスがターゲットのオブジェクトとなることを期待しているとき、子として加えたSpriteインスタンスがマウスのターゲットオブジェクトになるかもしれないからです。親インスタンスが必ずマウスイベントのターゲットオブジェクトとして働くようにするには、親インスタンスのmouseChildrenプロパティをfalseに設定します。
このプロパティを設定しても、イベントは配信されません。インタラクティブな機能を実現するには、addEventListener()メソッドを使う必要があります。
[訳者注*1] SimpleButtonクラスは、DisplayObjectContainerクラスを継承しませんので、表示リストをもたず、したがってDisplayObjectContainer.addChild()メソッドで子のインスタンスを加えることもできません。
|
実装
public function get mouseChildren():Boolean
public function set mouseChildren(value:Boolean):void
例
以下の例では、containerという名前のSpriteオブジェクト(DisplayObjectContainer型のひとつ)を設定します。そして、そのmouseChildrenプロパティをfalseに設定すると、mouseClickイベントのターゲットがオブジェクトcontainerになり、その子オブジェクトではないことを示します。
import flash.display.Sprite;
import flash.events.MouseEvent;
var container:Sprite = new Sprite();
container.name = "container";
addChild(container);
var circle:Sprite = new Sprite();
circle.name = "circle";
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(40, 40, 40);
container.addChild(circle);
container.mouseChildren = false;
container.addEventListener(MouseEvent.CLICK, clicked);
function clicked(event:MouseEvent):void {
trace(event.target.name); // container
}
|
Player
ActionScript 3.0/Flash Player 9/AIR1.0以降。
出典
Adobe LiveDocs[ActionScript 3.0 Language and Components Reference] > [DisplayObjectContainer]「mouseChildren property」
参考
Adobe LiveDocs[ActionScript 3.0コンポーネントリファレンスガイド] > [DisplayObjectContainer]「mouseChildrenプロパティ」
作成者: 野中文雄
作成日: 2008年7月20日