2015-07-19 60 views
0

我一直在研究一个应用程序,在主屏幕上有一个电影剪辑ball_1重复自己,只要按下任何按钮,另一个电影剪辑ball_2开始,前一个电影剪辑ball_1消失。我想让ball_2只播放一次,消失并且影片剪辑ball_1返回到主屏幕。我正在使用基于类的脚本。如何使影片剪辑仅播放一次并使用类移动到另一个影片剪辑?

目前代码:

BTN_1.addEventListener(MouseEvent.CLICK,playClip_1); 

function playClip_1(e:MouseEvent):void { 
    ball_2.visible = true; 
    ball_2.gotoAndPlay(2); 
    ball_1.visible = false; 
} 
+0

请显示您当前的相关代码 – BadFeelingAboutThis

+0

BTN_1.addEventListener(MouseEvent.CLICK,playClip_1);函数playClip_1(e:MouseEvent):void {ball_2.visible = true; ball_2.gotoAndPlay(2); ball_1.visible = false; \t \t \t \t}} –

+0

很好,现在,目前的结果是什么?例如。你目前的代码做或不做的事情与你期望的不同?你是否在'ball_2'的时间轴末尾有任何代码向发布的代码表明它已完成播放? – BadFeelingAboutThis

回答

1

好吧,我觉得这是刚好足够的信息,现在回答这个问题。

首先,你会想要两个功能,一个显示ball_1,一个显示ball_2

function playClip_1(e:MouseEvent = null):void { 
    ball_2.visible = true; 
    ball_2.gotoAndPlay(2); 
    ball_1.visible = false; 
    ball_1.stop(); //no sense having it keep playing when not visible 
} 

//function to call when ball_2 finishes it's timeline 
function clip1Complete(e:Event = null):void { 
    ball_2.visible = false; 
    ball_1.visible = true; 
    ball_1.play(); 
} 

现在,您需要一种方法为ball_2调用clip1Complete功能,当它到达结束的这时间线。

最好的方法,将如上使用事件,在相同的代码情况下,把这个:

ball_2.addEventListener(Event.COMPLETE, clip1Complete); 

然后,ball_2时间表的最后框架上,把这个:

stop; 
dispatchEvent(new Event(Event.COMPLETE)); 

或者,你可以放弃事件监听器,并直接调用该函数的ball_2像这样在最后一帧:

stop(); 
MovieClip(parent).clip1Complete(); 
+0

太棒了!它的作品...非常感谢! –