2011-02-15 104 views
0

好的,我打破了我的示例,以避免复杂的事情。As3按钮被禁用

我在第一帧有2个按钮,由一个叫做'容器'的动画片段夹住。 MOUSE_OVER/OUT适用于按钮影片剪辑内的动画,并以stop()停止; (在movieclip按钮内)。

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); 
    } 
} 

正如你可以看到,我希望容器的α0,当用户点击非此即彼按钮,然后有时间轴跳到相应的帧,这取决于如果用户选取键1(frame15)或按钮2 (第16帧)。

这工作得很好。问题是我在这些框架上有一个新菜单,这些框架也位于名为container2的影片剪辑中 - 当我使用这种方法时,他们的MOUSEOVER/OUT/CLICKs突然不工作。这里是他们的代码:

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)我已经把自己的残疾是。

这是因为我没有移除听众吗?我是否以这种错误的方式去做?

在此先感谢 - 非常感谢。

+0

欢迎来到社区。请查看您以前的问题,并选择最佳答案旁边的复选标记。 – zzzzBov 2011-02-15 22:18:16

回答

1

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

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

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

只要有可能,请避免使用actions来管理您的动作代码。将您的代码放入外部AS文件可以显着减少代码重复。

+0

感谢您的回复。是的,我的代码是在它自己的层面 - 我从现在开始将它添加到外部 - 感谢提示!我的第一组按钮(按钮1,按钮2)位于框架1-11上,它们位于框架1上。第二组按钮(main1,main2)位于它们自己的图层上,从第12帧开始,其代码开启框架12.两个按钮的代码位于同一图层上。任何想法为什么会发生这种情况? – 2011-02-15 22:41:08