2013-08-01 70 views
0

我有一个菜单,4按钮,用于切换到其他页面内容,并且所有的它有这样的代码:我的flash菜单变得疯狂。 AS3

function chuyenhome(e:MouseEvent):void{ 
    homect.addEventListener(Event.ENTER_FRAME, nexttohome); 
    btn_home.gotoAndStop(15); 
    if (btn_about.currentFrame == 15){ 
    btn_about.gotoAndPlay(16); 
    } 
    if (btn_menu.currentFrame == 15){ 
    btn_menu.gotoAndPlay(16); 
    } 
    if (btn_contact.currentFrame == 15){ 
    btn_contact.gotoAndPlay(16); 
    } 
    homect.gotoAndPlay(31); 
} 
function nexttohome(e:Event):void{ 
    if (homect.currentFrame>=homect.totalFrames){ 
     MovieClip(root).gotoAndStop(4); 
    } 
} 

这是菜单HOME。 3其他菜单ABOUT,BLOG,CONTACT按钮使用相同的代码,但更名为功能。如果我只点击2个菜单按钮,它工作正常。但是当我尝试点击第三个菜单时,它会变得疯狂。例如,当我点击HOME和ABOUT时,无论点击数千次,它都切换到HOME页面和ABOUT页面,没有任何问题。它工作正常,但是当我尝试点击联系人时,然后...它会显示HOME页面,我重新点击联系人,它会显示关于...等等。这很疯狂。对不起我的英文。我正在使用Flash CS4和AS3。谢谢!

回答

0

您必须不将多个事件侦听器添加到一个MC。看看,如果所有其他功能都是这一个用改变的帧进行拷贝的话,那么每个功能都会添加一个输入帧监听器。这些是累积性的,因此调用homect.addEventListener(Event.ENTER_FRAME, nexttohome);两次将导致每帧调用nexttohome两次。大概你可以通过把代码放到最后一帧的homect电影剪辑的时间线上来完全避免这个听众,要致电stop(); MovieClip(root).gotoAndStop(4);