2

ユーザーがオブジェクトをスクロールできるようにマスクされるムービークリップ内にオブジェクトを配置しようとしています

私の現在の解決策は、内部ムービークリップごとにイベントリスターを追加することです...

outer_mc.myObject1.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject2.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject3.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject4.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject5.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject6.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject7.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject8.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject9.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject10.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject11.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
outer_mc.myObject12.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);

function swapMovie(e:MouseEvent) {
    trace(e.currentTarget.name + " selected");
}

内部ムービークリップの可変リストが存在する可能性があるため、これは不規則(そして醜い:)になる可能性があるため、親オブジェクトのリスナーを追加しようとしています。これが現在の試みです...

outer_mc.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);

function swapMovie(e:MouseEvent) {
    trace(e.currentTarget.name + " selected");
}

ただし、これは「outer_mc」を返すだけであり、currentTargetの代わりにtargetを使用すると、Flashがinstance128、instance23などに割り当てるランダムなインスタンス番号が返されます。

誰かがactionscript3で動作する子オブジェクトのインスタンス名を取得するソリューションを持っていますか?私が調べたところ、最も近いのは、実際のインスタンス名を返さないターゲットソリューションを使用することです。

4

2 に答える 2

2

試す:

for (var i:int = 0; i < outer_mc.numChildren; i++) {
 var child:* = outer_mc.getChildAt(i);
 child.addEventListener(MouseEvent.MOUSE_DOWN, swapMovie);
}

この場合、outer_mcのすべての子をループし、それぞれにマウスダウンイベントリスナーを追加します。

于 2012-10-26T14:51:39.703 に答える
1

あなたはそのようなことをしようとすることができます:

function swapMovie(e:MouseEvent) {
    var current = e.target;
    parent = current.parent;
    while (parent != e.currentTarget)
    {
        current = current.parent;
        parent = current.parent;
    }

    //Current should be your object, now
}

基本的には、outer_mcが見つかるまで1レベル上に移動し、停止して、クリックした子を返します。

于 2012-10-26T14:52:30.600 に答える