我有一个代码可以在我的第一个场景中制作五彩纸屑,我只需要它在第一个场景中发生,但它发生在所有场景中。如果我放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电影进入下一场景时不继续运行?
非常感谢你! 爵
答案 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不在的地方(第二场景),五彩纸屑就消失了。