快速业务通道

Flash AS3入门:纯代码火的效果

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-07
**/
  • package {
  • import flash.display.MovieClip;
  • import flash.events.EventDispatcher;
  • import flash.events.Event;
  • import flash.display.BlendMode;
  • import flash.filters.GlowFilter;
  • import flash.geom.ColorTransform;
  • public class fire extends MovieClip {
  • private var fires:mack_fire;
  • private const maxBalls:int = 60;//火花数量
  • private const Mc_x:int = stage.stageHeight/2;//起火开始X坐标
  • private const Mc_y:int = stage.stageHeight/2;//+stage.stageHeight/4;//起火开始Y坐标
  • private const Mc_more:int = 1;//顶点,移动和透明度的顶点,1为完全不透明或没有缩放比例,AS3中以1做为顶点,AS2中是100
  • private const McY:int = 1;//向上移动速度
  • private var i=1;//记数变量
  • private var obj_scal:Array=new Array();//缩放变量保存数组
  • private var obj_fast:Array=new Array();//移动速度变量保存数组
  • private var obj_action:Array=new Array();//横向移动速度更改变量
  • private var obj_n:Array=new Array();//横向移动方向控制变量
  • private var obj_s:Array=new Array();//横向移动速度控制变量
  • private var obj_gs:Array=new Array();
  • private var obj_g:Array=new Array();//颜色控制变量
  • public function fire() {
  • addEventListener(Event.ENTER_FRAME,fire_mv);
  • }
  • public function fire_mv(event:Event):void{
  • var k = Math.random();//制造随即数字,这个变量决定火花的移动距离,已经移动范围
  • var scale:Number = k ? k : 1;//制造一个随即数字,这个数字要小于1,大于0
  • fires = new mack_fire();//新元件创建
  • fires.scaleX = fires.scaleY = fires.alpha = scale;//元件的缩放以及透明度设置,根据上面的随即数设置
  • obj_g[i] = 100;
  • obj_gs[i] = (1-scale+.2)*3;//定义一个新的数组元素,用处在更改元件颜色
  • obj_fast[i] = Math.floor(scale*2);//纵向移动速度主变量
  • obj_action[i]=(Math.random()>0.5)?1:-1;//纵向移动 方向主变量
  • obj_scal[i] = 1 - obj_fast[i]/10;//对于进行中火花的缩放进行控制
  • obj_n[i] = obj_s[i] = 1;
  • fires.x= Mc_x;//定义火花产生的横坐标
  • fires.y= Mc_y;//定义火花产生的纵坐标
  • fires.blendMode = BlendMode.ADD;//这部分是纯代码火花的重点,颜色叠加。让火花和火花之间看起来更圆滑。没有这个部分,火的效果根本不成立
  • fires.name = "fire"+i;//定义一个火花的名字,在下面通过getChildByName来使用。这是笨方法。记得以前有朋友不用定义也可以使用的。
  • addChild(fires);
  • for (var n:int = 1; n<maxBalls; ++n){
  • var m=getChildByName("fire"+n);//使用上面定义的火花影片剪辑
  • if(m){
  • var colorInfo:ColorTransform = m.transform.colorTransform;//定义颜色控制器
  • var xx=obj_gs[n]*2;
  • obj_g[n] -= Math.ceil(xx);
  • if(obj_g[n] < 10) obj_g[n]="00";//更改颜色,这部分就是为什么黄色的影片剪辑变成红色的理由
  • var rgbs = "0xff"+obj_g[n]+"00";//转义为字符串,这部分我是用最傻的办法来做的 ,实在是不了解AS3。请高手多指导
  • colorInfo.color = rgbs;
  • m.transform.colorTransform = colorInfo;
  • m.y -= 1-obj_s[n]+.4;//向上移动
  • m.x += obj_fas
  • 凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

    分享到: 更多

    Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

    地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

    电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

    《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号