AS2 - 如何在场景1中停止继续下一个场景的操作

时间:2013-12-16 16:25:15

标签: flash actionscript-2

我有一个代码可以在我的第一个场景中制作五彩纸屑,我只需要它在第一个场景中发生,但它发生在所有场景中。如果我放stop();代码层keyframe上场景1末尾的代码,它停止整个电影,而不是代码。我还在电影剪辑代码的框架上尝试了removeMovieClip();,但是没有用。

我有一个包含影片剪辑的图层,影片剪辑上有这个代码:

onClipEvent (load) {
    function reset() {
        //generate the random color
        R = random(256);
        G = random(256);
    B = random(256);
     colorHexString = R.toString(16)+G.toString(16)+B.toString(16);
    colorHex = parseInt(colorHexString, 16);
    hairColor = new Color(this);
    hairColor.setRGB(colorHex);
    //generates random movemtn onscreen
    xSpeed = random(3)+1;
     ySpeed = (Math.random()+1)*random(5)+1;
    if (ySpeed == 1) {
        ySpeed = (Math.random()+1)*random(5)+1;
    }
    direction = random(2)+1;
    //randomly places confetti at the top of the screen
    position = random(863)+1;
    _x = position;
    _y = 0;
    }
    reset();
}
onClipEvent (enterFrame) {
    //makes the confetti fall
    _y += ySpeed;
    directionChange = random(10)+1;
    if (directionChange == 1) {
    direction = random(2)+1;
    xSpeed = random(3)+1;
    }
    if (direction == 1) {
    _x += xSpeed;
    }
    if (direction == 2) {
    _x -= xSpeed;
    }
    if (_y>400) {
    reset();
    }
}

然后我在第一个关键帧中有一个名为control的控件上面有一个图层:

 numConfetti = 100;
for (i=2; i<=numConfetti; i++) {
confetti1.duplicateMovieClip("confetti"+i, i+100);
}

这段代码是我在confett效果上线的代码,所以我不知道如何修复它,但我知道基础知识。你能否告诉我如何在场景1结束时停止动作,并在Flash电影进入下一场景时不继续运行?

非常感谢你! 爵

1 个答案:

答案 0 :(得分:0)

你的问题非常简单。这段代码

numConfetti = 100;
for (i=2; i<=numConfetti; i++) {
    confetti1.duplicateMovieClip("confetti"+i, i+100);
}

创建100个实例,它是confetti1 MovieClip的副本。 动态创建的实例不依赖于帧。他们一直呆在那里你创建它,这在你的主时间轴上。 你有两个选择。

1.在创建实例的那一刻,在数组中放置对它们的引用,然后你需要你的五彩纸屑消失,用代码删除它们。这里更改了您的创建代码。

numConfetti = 100;
conf=[];
for (i=2; i<=numConfetti; i++) {
    var newConf=confetti1.duplicateMovieClip("confetti"+i, i+100);
    conf.push(newConf);
}

然后你需要删除它们使用:

 for (i=0; i<conf.length; i++) {
    conf[i].removeMovieClip();
}

2.你可以在MovieClip中隔离所有的五彩纸屑。只需将所有代码放入新MC中,然后将其放在舞台上即可。现在如果MC出现在舞台上 - 你会看到你的五彩纸屑。如果你去了MC不在的地方(第二场景),五彩纸屑就消失了。