0

フラッシュでシーケンサーを作成しています。それぞれに再生ボタンがあるシンボル トラックの 8 つのインスタンスがあります。単一のイベント リスナーを使用して、各サンプルの再生を個別に処理したいと考えています。私が抱えている問題は、トラック ムービー クリップ内にあるため、各ボタンに一意のインスタンス名を付けられないことです。ここに私のコードがあります:

masterContainer.addEventListener(MouseEvent.CLICK, clickHandler);
function clickHandler(event:MouseEvent):void{
if(event.target.name == "masterPlay"){
    trace("master play was clicked");
}
if(event.target.name == "silglePlay1"){
    trace("track 1 play button");
}
if(event.target.name == "silglePlay2"){
    trace("track 2 play button");
}
}

すべてのトラックは、マスター コンテナーとマスター コントロール内にあります。シングル再生ボタンはトラック シンボルの横にあります。コードが役立つかどうかはわかりませんが、8 つの個別のトラック シンボルを作成せずにこれを行う方法はありますか?

4

2 に答える 2

0

トラックムービークリップでクリックイベントを処理してから、イベントハンドラーでバブリングを使用して独自のカスタムイベントをディスパッチします。これを処理して、event.targetを一意のトラックインスタンス名と比較できます。言い換えると、トラックコンポーネントは自給自足であり、独自のロジック(この場合は再生ボタンのクリック処理)をカプセル化する必要があります。

于 2012-10-25T09:55:04.093 に答える
0

、、...、track1があなたが持っているトラックであり、すべてのトラック内の再生ボタンが であると仮定します。次に、トラックの再生ボタンに異なる名前を付けなくても、すべての単一のリスナーを作成できます。(私はあなたがしたようにリスナーを追加しました)track2track8playBtnmasterContainer

masterContainer.addEventListener(MouseEvent.CLICK, clickHandler);

function clickHandler(event:MouseEvent):void{
    var tapped = e.target;

    if(tapped.name == "masterPlay"){
        trace("master play was clicked");
    }

    if(tapped.name == "playBtn"){
        switch(tapped.parent.name){
            case "track1":
                trace("track 1 play button");
                break;
            case "track2":
                trace("track 2 play button");
                break;
            case "track3":
                trace("track 3 play button");
                break;
            case "track4":
                trace("track 4 play button");
                break;
            case "track5":
                trace("track 5 play button");
                break;
            case "track6":
                trace("track 6 play button");
                break;
            case "track7":
                trace("track 7 play button");
                break;
            case "track8":
                trace("track 8 play button");
                break;
        }
    }
}

それはあなたを助けると思います。

于 2012-10-25T13:00:16.140 に答える