1

こんにちは、今日の問題は、上下にスライドするボタンがいくつかあることです。アップ状態のときに、閉じるボタンを象徴する X グラフィックを追加します。ただし、X グラフィックがボタン操作を妨げているようです。

代替テキスト
(ソース: flickr.com )

私が取り組んでいる映画に例があります >> here << 。ここには 2 つのムービーがあります。大きい方の青いタブをクリックすると、私が話している内容が表示されます。X ボタンが表示されますが、X 領域をクリックしてもボタンがドロップダウンしません。ボタンをドロップダウンするには、青いボタン領域をクリックする必要があります。

Xボタンを基本的に同じ方法で追加する小さなテストムービーを作成しました。正常に動作することに気付いた場合(Xグラフィックをクリックしても右にアニメーション化されます)

これがビッグムービーの私のコードです(それほど長くならないようにトゥイーンコードを隠しました):

function handleButtonClick(event:MouseEvent):void {
var button:MovieClip=event.target as MovieClip;
var id:Number=Number(button.name.split("button")[1]);

dispatchEvent(new CustomEvent(CustomEvent.PAUSE_MOVIE, {}));

if (! $btn1&&! $btn2) {
    if (storeButton2==buttons[id]) {
        closeTabX.x = buttons[1].width - (closeTabX.width + 10);
        closeTabX.y=buttons[1].height/2-15;
        buttons[1].addChild(closeTabX); // X added here
        $btn2=true;
        $btn1=false;
    } else if (storeButton1 == buttons[id]) {
        closeTabX.x = buttons[0].width - (closeTabX.width + 10);
        closeTabX.y=buttons[0].height/2-15;
        buttons[0].addChild(closeTabX); // X added here
        $btn1=true;
        $btn2=false;
    }
} else if ($btn1 && !$btn2) {
    if (storeButton2==buttons[id]) {
        buttons[0].removeChild(closeTabX); // X removed here
        buttons[1].addChild(closeTabX); // X added here
        $btn2=true;
        $btn1=false;
    } else if (storeButton1 == buttons[id]) {
        buttons[0].removeChild(closeTabX); // X removed here
        $btn1=false;
    }
} else if ($btn2 && !$btn1) {
    if (storeButton2==buttons[id]) {
        buttons[1].removeChild(closeTabX);
        $btn2=false;
    } else if (storeButton1 == buttons[id]) {
        buttons[1].removeChild(closeTabX); // X removed here
        buttons[0].addChild(closeTabX); // X added here
        $btn1=true;
        $btn2=false;
    }
}

}

これが私の基本的なテスト ムービーのコードです。

var blueButton:MovieClip;
var closeBtnX:MovieClip;

blueButton = new BlueButton;
blueButton.buttonMode = true;

closeBtnX = new CloseTabX;
closeBtnX.x = blueButton.width/2 - closeBtnX.width;

addChild(blueButton);


blueButton.addEventListener(MouseEvent.MOUSE_UP, specialClick);

function specialClick(event:MouseEvent):void
{
  blueButton.addChild(closeBtnX); // X added here
  blueButton.x = blueButton.x+10;
}

メインの例で X をクリックしてタブを閉じることができない理由がわかりませんが、私の小さな基本的なムービーではできますか? 考え、アイデア?

4

1 に答える 1

3

最初の例で「closeTabX」をインスタンス化する方法を投稿していませんが、それは小さな例(CloseTabX)と同じクラスですか?

簡単な「修正」は、次のようにプロパティを設定すると、親へのマウスイベントをブロックしないことです。

closeTabX.mouseEnabled = false;
closeTabX.mouseChildren = false;

そのクラスがマウス ターゲットになることを意図していない場合は、クラス コンストラクターでこれらのプロパティを設定して、そのクラスのインスタンスがマウス イベントをブロックしないようにすることもできます。

于 2009-10-29T17:55:18.900 に答える