Flash 8 光影变换效果
2007-01-13 10:56:03 来源:WEB开发网核心提示: onEnterFrame循环来控制移动://通过onEnterFrame循环,来让粒子移动.mc.onEnterFrame=function(){this.tx+=this.xtempo;this.ty+=this.ytempo;this._x=this.x0+Math.sin(this.
onEnterFrame循环来控制移动:
//通过onEnterFrame循环,来让粒子移动.
mc.onEnterFrame=function(){
this.tx+=this.xtempo;
this.ty+=this.ytempo;
this._x=this.x0+Math.sin(this.tx)*this.xd;
this._y=this.y0+Math.cos(this.ty)*this.yd;
};
在这段代码中,通过将前面定义的动态属性,应用在onEnterFrame循环中,起到决定性作用.
this._x=this.x0+Math.sin(this.tx)*this.xd;
this._y=this.y0+Math.cos(this.ty)*this.yd;
其中this.tx,this.ty,this.xd,this.yd.均为前面定义的动态属性。我们使用了sin()和cos ()方法是为了使每个粒子自身有一个环形的运动路线。
Ok.在整段代中,我们看到使用融合模式blendmode只有一行,但在这里它显得尤为重要,加上与去掉效果是截然不同的。
现在你就可以测试你的影片了。
接下来我们要在上面的基础上进行一下变化。看看效果会有什么不同。
我们现在要增加粒子的大小和范围。代码做如下的修改。
//定义中心位置
varcx=0;
varcy=0;
//设定循环20次,准备从库中复制链接id为partical的影片.
for(vari=0;i<100;i++){
//复制影片剪辑,引用名称为mc.
varmc=this.attachMovie("partical","p"+i,i);
with(mc){
//初始化影片剪辑的位置,注意此时cx,cy是用来调整mc实例的偏移位置的.
_x=cx+Math.random()*590;
_y=cy+Math.random()*350;
_xscale=_yscale=100*Math.random()*5+1;
}
//针对mc应用融合模式类型"add"
mc.blendMode="add";
//设定mc实例的角度随机值
mc.tx=random(360);
mc.ty=random(360);
//设定用于mc角度的增量随机值
mc.xtempo=Math.random()/10;
mc.ytempo=Math.random()/10;
//设定mc实例的速度随机值
mc.xd=Math.random()*10+1;
mc.yd=Math.random()*10+1;
mc.x0=mc._x;
mc.y0=mc._y;
//跳转到指定的帧,以变换不同颜色的小球上.
mc.gotoAndStop(random(5)+1);
//通过onEnterFrame循环,来让粒子移动.
mc.onEnterFrame=function(){
this.tx+=this.xtempo;
this.ty+=this.ytempo;
this._x=this.x0+Math.sin(this.tx)*this.xd;
this._y=this.y0+Math.cos(this.ty)*this.yd;
};
}
斜体加粗的代码是我们所修改的位置,我们增加了粒子的数量,同时加入了_xscale._yscale.缩放的随机值,这样便会放大粒子增加粒子的重合度。效果如下:
- ››FLASH不等于运算符!=的使用实例
- ››FLASH不全等运算符!==
- ››FLASH字符串分隔符运算符
- ››FLASH% 模运算符
- ››Flash+、++、+= 加法运算符
- ››Flash, 逗号运算符
- ››flash中的-、--、-=减法运算符
- ››Flash的-Infinity 常数、.点运算符、/ 除法运算符...
- ››Flash两种注释方法/*..*/ 和// 注释行分隔符运算符...
- ››Flash的/=除法赋值运算符、=赋值运算符、== 等于运...
- ››Flash之?: 条件运算符、^ 按位 XOR 运算符、^= 按...
- ››Flash的_framesloaded代码示例
更多精彩
赞助商链接