flash中的不明白的地方!期待各位高手指条大路

来源:百度知道 编辑:UC知道 时间:2024/05/20 10:41:25
我自己做了一个下雪的代码,影片剪辑 雪花:snow,一个屋子(发生碰撞事件):block!雪花影片剪辑不动!
在最上面建立一个新图层代码设置如下:
i = 1;
speed = 5;
_root.snow.onEnterFrame = function() {
duplicateMovieClip(this, "snow"+i, i);
setProperty("snow"+i, _x, random(500));
i++;
if (_root.block.hitTest(this._x, this._y, true)) {
this.removeMovieClip();
} else {
this._y += speed;
}
};
各位大大我哪里搞错了!我是刚学!出来的效果是只有一个雪花在往下动!其他的雪花只是复制!而且y坐标不断变化的复制!这个代码哪里出错了?
我复制完影片剪辑之后!如果用设置影片剪辑属性的话是设置snow呢还是设置“snow”+i?
该怎么改?
如果我把影片剪辑雪花设置成自己往下再复制呢?
又该怎么写?
复制影片剪辑有点糊里糊涂的!
请各位大大解释一下!谢谢了!谢谢了!

//你的this 全部错误 。 你把代码卸载时间帧上。那么this就指的整个舞台上的东西了。换句话就是 舞台是一个元件,this 指的是这个元件,而不是元件内部的子元件。

//你把代码写到雪花元件 内部去 。自己修改下具体的代码就行了。

function createSnowflake(n){
this.createEmptyMovieClip("snowflake"+n,n);
mc=this["snowflake"+n];
mc.lineStyle(4,0xFFFFFF,60);
numSpikes=Math.round(Math.random()*1+5);
spikeRadius=Math.random()*8+10;
for(var i=0;i<numSpikes;i++){
mc.moveTo(0,0);
spikeAngle=2.0*Math.PI*i/numSpikes;
x=spikeRadius*Math.cos(spikeAngle);
y=spikeRadius*Math.sin(spikeAngle);
mc.lineTo(x,y);
}
return(mc);
}
function initSnowflakes(n){
numSnowflakes=n;
for(var i=0;i<numSnowflakes;i++){
mc=createSnowflake(i);
mc._x=Math.random()*550;
mc._y=Math.random()*400;
mc.speed=Math.random()*3+3;
mc.drift=Math.random()*2-1;
mc.rotate=Math.random()*18-9;
}
}
function moveSnowfla