我知道我必须做什么,只是不知道怎么做。
我知道我必须(在完成所有动画和诸如此类之后)声明第1帧上的所有变量(在单独的时间线中),例如a = 0; b = 0 ......
然后在循环结束时执行gotoandplay到一个条件(在第120帧,如果a = 0 gotoandplay(100),否则gotoandplay(15)
然后有一个按钮来改变a的值,这样当循环遇到条件时它会转到我想要的任何帧。
任何指针? 谢谢
答案 0 :(得分:0)
让我们假设您的按钮的实例名称为btn
,循环动画的实例名称为mc_loop
。
您可以这样做:
//listen for the mouse click on your button
btn.addEventListener(MouseEvent.CLICK, buttonClicked, false, 0, true);
//run this function on the click
function buttonClicked(e:Event):void {
//add a script to the last frame that calls this inline function
//the addFrameScript method wants a 0 based frame number, so the first frame would be 0, the last frame would the total frame count less 1
mc_loop.addFrameScript(mc_loop.totalFrames-1, function(){
mc_loop.stop(); //stop the clip so it doesn't loop anymore
mc_loop.addFrameScript(mc_loop.totalFrames-1, null); //remove the frame script so it doesn't run again should mc_loop reach the last frame again
});
}
使用此代码,假设mc_loop
已在播放/循环播放,点击btn
会在到达最后一帧时停止播放。
答案 1 :(得分:0)
所以我已经接受了你们的建议,并做了这个
1个动画,左右一个圆圈,一个按钮从第1-20帧开始,文字说"完成"一层21
3层: 操作 按键 第1层(动画层)
之后我在Action frame 1上设置代码
var loop:Boolean =true
在第20帧
if (loop==true){
gotoAndPlay(2);
}else {
gotoAndStop(21)
}
然后在按钮上,
btn.addEventListener(MouseEvent.CLICK, buttonClicked, false, 0, true);
function buttonClicked(e:Event):void {
loop=false
}
它有效。循环结束,然后它进入第21帧,然后停在那里。
我错过了什么吗?或者这是一个很好的解决方案? (也可以用这个菜单,用case而不是if' s和整数值跳转到我想要的章节)