[闪吧帖]雪花的派生做法(1)
[全屏欣赏]
点击浏览该文件
星星(3)(运行环境FLASH6。0)
对duplicateMovieClip功能的进一步学习。这次做又与上次有了不同的理解。当然也就是对
概念的进一步理解。主要用到的认识点如下:
一是对路径的进一步理解。写在mc上的AS,在定义自身的属性时,可以省略实名,直接引用
。如:this._x=_x;
二是对数组的认识。如;复制后的MC标识名为"snow" + i;在引用时,可以写成_root
["snow" + i],也可以写成eval ("snow" + i)
三是setProperty是更改属性值。如
setProperty("snow" + i, _x , random (550));
也可以写成: eval ("snow" + i)._x =random (550);
四是放在主场的mc卸载,用unloadMovie(snow);
五是卸载复制多个mc用循环语句。如:
for(i =0;i<=100;i++){
removeMovieClip(_root["snow" + i]);
六是flash6.0版本可以在mc上写复制自身的代码。
具体的做法与下雪的方法一样,只是改变了一下图形。
元件有二个:一个是背景图元,一个是雪影片剪辑。
主场有三层一帧:第一层背景,第二层雪,第三层AS。
写AS的地方分别在:(1)主场帧上,也就是AS层的第一帧;(2)主场雪实例上。
下面将AS列示出来:
(一)主场AS层的第1帧上的代码如下:
i=1;//变量初始值
while (i <= 100) {//i小于等于100时循环
duplicateMovieClip ("snow", "snow" + i, i);//复制主场实例snow,并命为标
识名"snow" + i,层深i.
eval ("snow" + i)._x =random (550);//设置复制后数组的X轴坐标
eval ("snow" + i)._y =random (400);//设置复制后数组的Y轴坐标
eval ("snow" + i)._xscale=(Math.random() * 60) + 40;//X轴缩放大小
eval ("snow" + i)._yscale=eval ("snow" + i)._xscale;//Y轴缩放大小
eval ("snow" + i)._alpha=eval ("snow" + i)._xscale + random (20);//透明
度
i++;
}
(二)写在主场雪实例上的代码:
onClipEvent (enterFrame) {
_x = this._x + ((Math.random() * _xscale) / 10);//定义X轴位置
_y = this._y + ((Math.random() * _yscale) / 10);//定义Y轴位置
if (_x > 550) {//如果X轴位置大于550时
_x=0;//返回0的位置,以免跑出主场区
}
if (_y > 400) {//如果Y轴位置大于400时
_y = 0;//返回0的位置,以免跑出主场区
}
}
(三)按钮上的代码:
on(release){
unloadMovie(snow);//卸载主场实例snow
for(i =0;i<=100;i++){//卸载复制的"snow" + i
removeMovieClip(_root["snow" + i]);
}
}
[全屏欣赏]
点击浏览该文件
星星(3)(运行环境FLASH6。0)
对duplicateMovieClip功能的进一步学习。这次做又与上次有了不同的理解。当然也就是对
概念的进一步理解。主要用到的认识点如下:
一是对路径的进一步理解。写在mc上的AS,在定义自身的属性时,可以省略实名,直接引用
。如:this._x=_x;
二是对数组的认识。如;复制后的MC标识名为"snow" + i;在引用时,可以写成_root
["snow" + i],也可以写成eval ("snow" + i)
三是setProperty是更改属性值。如
setProperty("snow" + i, _x , random (550));
也可以写成: eval ("snow" + i)._x =random (550);
四是放在主场的mc卸载,用unloadMovie(snow);
五是卸载复制多个mc用循环语句。如:
for(i =0;i<=100;i++){
removeMovieClip(_root["snow" + i]);
六是flash6.0版本可以在mc上写复制自身的代码。
具体的做法与下雪的方法一样,只是改变了一下图形。
元件有二个:一个是背景图元,一个是雪影片剪辑。
主场有三层一帧:第一层背景,第二层雪,第三层AS。
写AS的地方分别在:(1)主场帧上,也就是AS层的第一帧;(2)主场雪实例上。
下面将AS列示出来:
(一)主场AS层的第1帧上的代码如下:
i=1;//变量初始值
while (i <= 100) {//i小于等于100时循环
duplicateMovieClip ("snow", "snow" + i, i);//复制主场实例snow,并命为标
识名"snow" + i,层深i.
eval ("snow" + i)._x =random (550);//设置复制后数组的X轴坐标
eval ("snow" + i)._y =random (400);//设置复制后数组的Y轴坐标
eval ("snow" + i)._xscale=(Math.random() * 60) + 40;//X轴缩放大小
eval ("snow" + i)._yscale=eval ("snow" + i)._xscale;//Y轴缩放大小
eval ("snow" + i)._alpha=eval ("snow" + i)._xscale + random (20);//透明
度
i++;
}
(二)写在主场雪实例上的代码:
onClipEvent (enterFrame) {
_x = this._x + ((Math.random() * _xscale) / 10);//定义X轴位置
_y = this._y + ((Math.random() * _yscale) / 10);//定义Y轴位置
if (_x > 550) {//如果X轴位置大于550时
_x=0;//返回0的位置,以免跑出主场区
}
if (_y > 400) {//如果Y轴位置大于400时
_y = 0;//返回0的位置,以免跑出主场区
}
}
(三)按钮上的代码:
on(release){
unloadMovie(snow);//卸载主场实例snow
for(i =0;i<=100;i++){//卸载复制的"snow" + i
removeMovieClip(_root["snow" + i]);
}
}
回复Comments
作者:
{commentrecontent}