As3按钮被禁用

时间:2011-02-15 22:15:28

标签: flash actionscript-3 button

好吧,我打破了我的例子以避免使事情变得复杂。

我在第一帧上有2个按钮,由一个名为' container'的动画片段组成。 MOUSE_OVER / OUT用于按钮影片剪辑内的动画,并以stop()停止; (在动画片段按钮内)。

stop();


container.addEventListener(MouseEvent.CLICK, clickCommand);

function clickCommand(event:MouseEvent):void{
    if(event.target.name == "button1"){
        container.alpha = 0;
        gotoAndStop(15);
    }
        if(event.target.name == "button2"){
        container.alpha = 0;
        gotoAndStop(16);
    }
}


container.addEventListener(MouseEvent.MOUSE_OVER, rollOverCommand);

function rollOverCommand(event:MouseEvent):void{
    if(event.target.name == "button1"){
        event.target.gotoAndPlay(2);

}
    if(event.target.name == "button2"){
        event.target.gotoAndPlay(2);
    }

}



container.addEventListener(MouseEvent.MOUSE_OUT, rollOutCommand);

function rollOutCommand(event:MouseEvent):void{
    if(event.target.name == "button1"){
        event.target.gotoAndPlay(11);
    }
    if(event.target.name == "button2"){
        event.target.gotoAndPlay(11);
    }
}

正如您所看到的,当用户单击eigher按钮时,我希望容器的alpha为0,然后让时间轴跳转到相应的帧,具体取决于用户是否选择了按钮1(frame15)或按钮2(frame 16)

这很好用。问题是我在这些帧上有一个新菜单,它也被放在一个名为container2的影片剪辑中 - 当我使用这种方法时,它们的MOUSEOVER / OUT / CLICK突然不起作用。这是他们的代码:

stop();

    container2.addEventListener(MouseEvent.CLICK, clickCommand2);

function clickCommand2(event:MouseEvent):void
{
    if (event.target.parent.name == "main1")
    {
        event.target.root.gotoAndPlay(13);
        trace(event.target.parent.name);
    }
    else if (event.target.parent.name == "main2")
    {
        trace(event.target.parent.name);
        event.target.root.gotoAndStop(14);
    }
}


container2.addEventListener(MouseEvent.MOUSE_OVER, rollOverCommand2);

function rollOverCommand2(event:MouseEvent):void
{
    if (event.target.name == "main1","main2")
    {
        event.target.parent.gotoAndPlay(16);

    }
}



container2.addEventListener(MouseEvent.MOUSE_OUT, rollOutCommand2);

function rollOutCommand2(event:MouseEvent):void
{
    if (event.target.name == "main1","main2")
    {

        event.target.parent.gotoAndPlay(21);

    }
} 

所以我可以到达我想要的帧,但是我放置的新按钮(main1,main2)被禁用了。

是因为我没有删除听众吗?我是以错误的方式解决这个问题吗?

提前致谢 - 非常感谢。

1 个答案:

答案 0 :(得分:1)

我将假设您的代码已添加到actions,而不是添加到单独的AS文件中。

一些建议。如果您的按钮跨越整个时间轴,并且不移动,请确保它们位于自己的图层上,没有新的关键帧,这样就可以保留相同的实例并且事件监听器应该可以正常工作。

如果您的按钮是不同的实例,则需要重新绑定跳转到的关键帧上的事件侦听器。

尽可能避免使用actions来管理您的动作代码。将代码放在外部AS文件中可以显着减少代码重复。