图形添加按钮是我的阻止MouseEvent为什么?

时间:2009-10-29 17:40:09

标签: flash actionscript-3 button mouseevent

大家好我今天的问题是我有几个按钮可以向上和向下滑动,当处于向上状态时我会添加一个X图形来表示一个关闭按钮。但是X图形似乎阻止了我的按钮操作。

alt text
(来源:flickr.com

我在电影I've been working on >> 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来关闭标签,但你可以在我的小基本电影中?思想,想法?

1 个答案:

答案 0 :(得分:3)

你没有在第一个例子中发布你如何实例化'closeTabX',它是否与较小的例子(CloseTabX)相同?

一个简单的'修复'是如果你按如下方式设置它的属性,它不会阻止鼠标事件到它的父:

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

如果该类从不打算成为鼠标目标,您还可以在类构造函数中设置这些属性,以防止该类的任何实例阻止鼠标事件。