首页 | 互联网 | IT动态 | 网络设备 | 服务器 | IDC | 安全 | Cisco | Windows | Linux | Java | .Net | Oracle | CIW | 华为 | 专题
IT技术 | 网页设计 | 平面设计 | 电子书下载 | 教学视频 | 方案 | 数字网校 | 直播室 | 虚拟考场 | 面授培训 | 搜索 | 博客 | 沙龙 | 论坛
 Dreamweaver | Flash
 Fireworks  | Frontpage
 HTML/CSS  | Javascript
 Photoshop  | CorelDraw
 AuotoCAD   | Illustrator
 Freehand
 3DMax    | Authorware
 Director   | Maya
 PP点点通 | 迅雷 | BT
 eMule | FlashGet | Nero
 Ghost | Outlook | IE
 Maxthon | Office
 QQ | MSN | 网易泡泡
 Skype | 雅虎通 | 新浪UC

最新文章

您现在的位置: 中国IT实验室 >> 网页设计 >> Flash >> Action Script学习 >> 文章正文


用Flash AS代码制作美丽光影变幻动画


中国IT实验室收集整理  2007-11-23  佚名  保存本文  推荐给好友  收藏本站


◆ 网页平面多媒体培训、认证考试免费咨询热线:400-700-5807   进入网络咨询平台

  代码:

//复制影片剪辑,引用名称为mc. 
    var mc = this.attachMovie("partical", "p"+i, i);
    with (mc) {
    //初始化影片剪辑的位置,注意此时cx,cy是用来调整mc实例的偏移位置的.
        _x = cx+Math.random()*60;
        _y = cy+Math.random()*60;
    }

  这一段代码,现在来讲我们已经很熟知了,我们通过顶端的for循环20次。将库中的链接名为partical的粒子复制到场景中。复制的方法我们使用是的是attachMovie的方式,复制后的影片剪辑更名为”p” +I,也就是说你复制的结果应是p0,p1,p2,p3…..p19,而所有的这些影片剪辑我们为它起个实例名为mc.它代表了所有复制得到的影片剪辑。在with内部,我们开始指定这些粒子的初始位置。注意此时我们用上了cx,cy.并且加上了随机数60,也就是说料子初始化的位置在180-240的位置之间。

  为粒子实例mc 加入动态属性

  代码:

      //针对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);

  在这段代码的开始的位置mc.blendMode ="add" 便是我们加入融合模式的重点所在了,如果没有这一些就不会出来相叠加后的融合效果。但实现它的前题是我们必须要处理如基本了粒子活动,所以习惯上我们都是最后才加上滤镜或是融合模式。在这段代码中,所有的都是为第三段的循环准备的。其中有两句是用来做为角度的增量随机值的。这个角度增量值实际是为了在onEnterFrame循环中增加的角度的变化。使效果变得更明显。这一段中的最后一句也是重点,因为我们在partical的影片剪辑中放置了五个不同颜色的小球,我们通过随机跳转命令来达到不同颜色小球的切换。

 用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只有一行,但在这里它显得尤为重要,加上与去掉效果是截然不同的。

  现在你就可以测试你的影片了。
  接下我们要在上面的基出上进行一下变化。看看效果会有什么不同。
  我们现在要增加粒子的大小和范围。代码做如下的修改。

  代码:

//定义中心位置 
var cx = 0;
var cy = 0;
//设定循环20次,准备从库中复制链接id为partical的影片.
for (var i = 0; i<100; i++) {
    //复制影片剪辑,引用名称为mc.
    var mc = 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;
    };
    
}

上一页  [1] [2] [3] [4] [5] 下一页  

【责编:Luzi】


 相关文章  推荐文章
Flash制作神奇的互动橡皮刷实例
Flash8模糊滤镜绘制逼真青翠竹林
Flash制作光晕变幻动画特效
Flash制作花丛中的小蜜蜂卡通动画
Flash中有关层的深度处理的常用函数
Flash场景中影片剪辑的修改小技巧
用Flash AS行代码画一棵漂亮的树
软件聚宝盆 非专业也可做出好Flash
用Flash打造简单的下雪动画
Flash打造窗纱随风飘动的音乐动画特效
  文章评论