循环动画直到按下按钮,但让动画结束
Loop animation until button is pressed, but let animation finish
嗯,我知道我必须做什么,只是不知道怎么做。
我知道我必须(在制作完所有动画之后)在第 1 帧(在单独的时间线上)声明所有变量,例如 a=0;b=0...
然后在循环结束时执行 gotoandplay 到 begging,条件是(在第 120 帧,如果 a=0 gotoandplay (100) 否则 gotoandplay(15)
然后有一个按钮来改变a的值,这样当循环满足条件时它就会转到我想要的任何帧。
有什么指点吗?
谢谢
假设您的按钮的实例名称为 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
已经是 playing/looping,单击 btn
将在它到达最后一帧时停止它。
所以我采纳了你的两个建议,并这样做了
1 个动画,一个圆圈向左和向右移动,一个按钮从第 1-20 帧开始,文本显示 "Done" 一层 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 帧,然后停在那里。
我错过了什么吗?或者这是一个好的解决方案? (另外,可以将其用于菜单,使用大小写而不是 if 和整数值跳转到我想要的章节)
嗯,我知道我必须做什么,只是不知道怎么做。
我知道我必须(在制作完所有动画之后)在第 1 帧(在单独的时间线上)声明所有变量,例如 a=0;b=0...
然后在循环结束时执行 gotoandplay 到 begging,条件是(在第 120 帧,如果 a=0 gotoandplay (100) 否则 gotoandplay(15)
然后有一个按钮来改变a的值,这样当循环满足条件时它就会转到我想要的任何帧。
有什么指点吗? 谢谢
假设您的按钮的实例名称为 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
已经是 playing/looping,单击 btn
将在它到达最后一帧时停止它。
所以我采纳了你的两个建议,并这样做了
1 个动画,一个圆圈向左和向右移动,一个按钮从第 1-20 帧开始,文本显示 "Done" 一层 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 帧,然后停在那里。
我错过了什么吗?或者这是一个好的解决方案? (另外,可以将其用于菜单,使用大小写而不是 if 和整数值跳转到我想要的章节)