ボタンの上に追加されたグラフィックが、MouseEventをブロックしているのはなぜですか?

StackOverflow https://stackoverflow.com/questions/1645383

質問

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

 alt text
(ソース: flickr.com

映画に例があります 私は<!> gt; < !> gt;ここ<!> lt; <!> lt; 。 ここには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をクリックしてタブを閉じることができない理由はわかりませんが、私の小さな基本的なムービーではできますか?考え、アイデア?

役に立ちましたか?

解決

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

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top