1

他の多くのムービークリップを含むメインの CONTAINER があります。これらの CHILD1 ムービークリップには、CUBE と IMAGE ムービークリップもあります。IMAGE ムービークリップのみのマウス イベントを無効にしたいのですが、可能ですか?

CONTAINER
 -CHILD1
  -CUBE //this has mouse events!
  -IMAGE //want to disable the mouse events for this!
 -CHILD2
  -CUBE //this has mouse events!
  -IMAGE //want to disable the mouse events for this!
 -CHILD3
  -CUBE //this has mouse events!
  -IMAGE //want to disable the mouse events for this!

何か案が?ありがとう!CHILD のコード チャンク:

private function added(e:Event) {
    removeEventListener(Event.ADDED_TO_STAGE, added);
    addEventListener(MouseEvent.MOUSE_UP, NEXT);
}
public function NEXT(e:MouseEvent) {
    //OB is the instance name of the IMAGE
    if(e.target.name == "OB"){
        e.stopImmediatePropagation();
        return;
    }
    OB.gotoAndStop(Main.ID);
}

[解決しよう] 特定の子のイベント リッスンを無効にするには:

private function added(e:Event) {
    mouseEnabled = false; //This is the clue.
    OB.mouseEnabled = false;
    OB.mouseChildren = false;
    removeEventListener(Event.ADDED_TO_STAGE, added);
    cube.addEventListener(MouseEvent.MOUSE_UP, NEXT);
}
4

2 に答える 2

2

マウスリスナーが画像に接続されている場合は、コンストラクターでIMAGEのmouseEnabled&mouseChildrenプロパティをfalseに設定し(またはFlash CSXでタイムラインを使用している場合)、IMAGEオブジェクトのタイムライン(最初のフレーム)でmouseEnabled&mouseChildrenをfalseに設定します。

投稿されたコードの変更は次のとおりです(CUBEのインスタンスを何と呼んでいるかはわかりません)。

private function added(e:Event) {
    removeEventListener(Event.ADDED_TO_STAGE, added);
    CUBE.addEventListener(MouseEvent.MOUSE_UP, NEXT);
    OB.mouseEnabled = false;
    OB.mouseChildren = false;
}
public function NEXT(e:MouseEvent) {
    OB.gotoAndStop(Main.ID);
}
于 2012-08-01T17:34:34.497 に答える
1

イメージにインスタンス名を付けて (「OB」と仮定)、次のようにします。

private function added(e:Event) 
{
    this.getChildByName("OB").mouseEnabled = false
    this.getChildByName("OB").mouseChildren = false; 
    removeEventListener(Event.ADDED_TO_STAGE, added);
    addEventListener(MouseEvent.MOUSE_UP, NEXT);    
}

これが機能しない場合は、おそらくコードに他の問題があるため、コードを説明して表示する必要があります。

于 2012-08-01T19:52:50.733 に答える