flash 按钮控制MC播放x次的问题。
我制作了一个影片剪辑myMC(比如一个球做一次圆周运动,共25帧动画),和两个按钮,一个按钮b1控制myMC播放2次,一个按钮b2控制myMC播放5次。mc电影剪辑的第一...
我制作了一个影片剪辑myMC(比如一个球做一次圆周运动,共25帧动画),和两个按钮,一个按钮b1控制myMC播放2次,一个按钮b2控制myMC播放5次。mc电影剪辑的第一帧使用了动作stop(),最后一帧设置了stop();
我想达到这样一效果:主场景,myMC开始是不播放的,单击按钮b1,myMC播放2次(小球做两次圆周运动);单击按钮b2,myMC播放5次(小球做五次圆周运动)。我在主场景的按钮b1上加了如下动作:
on(press)
{
do
{
mymc.play();
x=mymc.currentframe();
if(x==25){i++;}
}while(i<2)
}
我想的是循环播放,当mymc播放到第25帧的时候,检测到帧号,I自动加1,再次执行mymc.play();
但是我在测试的时候,发现单击按钮b1,MYMC智能播放一次。在线等待,请问高手们原因?难道是没循环起?
按钮b2只需要修改I的值就可以控制mymc播放的次数了吧?! 展开
我想达到这样一效果:主场景,myMC开始是不播放的,单击按钮b1,myMC播放2次(小球做两次圆周运动);单击按钮b2,myMC播放5次(小球做五次圆周运动)。我在主场景的按钮b1上加了如下动作:
on(press)
{
do
{
mymc.play();
x=mymc.currentframe();
if(x==25){i++;}
}while(i<2)
}
我想的是循环播放,当mymc播放到第25帧的时候,检测到帧号,I自动加1,再次执行mymc.play();
但是我在测试的时候,发现单击按钮b1,MYMC智能播放一次。在线等待,请问高手们原因?难道是没循环起?
按钮b2只需要修改I的值就可以控制mymc播放的次数了吧?! 展开
2个回答
展开全部
经过测试这种方法可行,但不是很好,希望有更好的方法来实现。代码如下
k = 2;//转动二次
j = 5;//转动5次
ball_mc.stop();//ball_mc为转动小球影片剪辑的实例名
btn2_btn.onRelease = function() {//btn2_btn为转动二次按钮的实例名
i = 0;
ball_mc.play();
ball_mc.onEnterFrame = function() {
x = ball_mc._currentframe;
i++;
if (i>=25*k) {//25是指那个影片剪辑长度为25帧
_root.ball_mc.stop();
delete onEnterFrame;
}
};
};
btn5_btn.onRelease = function() {//btn5_btn为转动五次按钮的实例名
i = 0;
ball_mc.play();
ball_mc.onEnterFrame = function() {
x = ball_mc._currentframe;
i++;
if (i>=25*j) {
_root.ball_mc.stop();
delete onEnterFrame;
}
};
};
我这个代码是写在帧上的,写在按钮上的有点不同。注意影片剪辑中不要有stop()命令。讲一下我这个代码的不足:delete onEnterFrame;这个命令没用,也就是只要flash在运行,i的值会一直在加。
k = 2;//转动二次
j = 5;//转动5次
ball_mc.stop();//ball_mc为转动小球影片剪辑的实例名
btn2_btn.onRelease = function() {//btn2_btn为转动二次按钮的实例名
i = 0;
ball_mc.play();
ball_mc.onEnterFrame = function() {
x = ball_mc._currentframe;
i++;
if (i>=25*k) {//25是指那个影片剪辑长度为25帧
_root.ball_mc.stop();
delete onEnterFrame;
}
};
};
btn5_btn.onRelease = function() {//btn5_btn为转动五次按钮的实例名
i = 0;
ball_mc.play();
ball_mc.onEnterFrame = function() {
x = ball_mc._currentframe;
i++;
if (i>=25*j) {
_root.ball_mc.stop();
delete onEnterFrame;
}
};
};
我这个代码是写在帧上的,写在按钮上的有点不同。注意影片剪辑中不要有stop()命令。讲一下我这个代码的不足:delete onEnterFrame;这个命令没用,也就是只要flash在运行,i的值会一直在加。
展开全部
i的初始值是多少?,是0的话应该循环2次,是1的话肯定就一次。如果5次的改下while的条件就行了。但是你这个代码有问题,循环是很快的,一般情况下循环结束后才展示帧内容,所以建议你不要使用循环,否则可能导致不响应。可以使用setInterval来控制次数比较好,还可以使用onEnterFrame。
追问
onEnterFrame 这个不懂啊。
新手!
追答
在动画第一帧加:
vai i:int=0;
mymc.stop();
然后把mymc的第一帧的stop()去掉,之后在按钮上加如下代码。
on (release) {
mymc.onEnterFrame = function()
{
mymc.play();
var xx:Number = _root.mymc._currentframe;
if (xx == 25)
{
i++;
mymc.gotoAndPlay(1);
}
if (i == 2)//循环6次,把这里改成i=6就行了。
{
delete mymc.onEnterFrame;
i=0;
}
};
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询