手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网页制作>Flash>列表

三维粒子系统在FlashAS2中的实现

来源:互联网 作者:west263.com 时间:2008-04-02
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  privatevarmMotionCom:RCSMove;

  privatevarmColDetCom:RCSColDet;

  //--functionwhichisusefulbyextends.--

  /*

  publicfunctionE3DNode(inX:Number,inY:Number,inZ:Number)

  publicfunctionresetXYZ(inX:Number,inY:Number,inZ:Number)

  publicfunctiongetPerspective(viewDistance:Number):Number

  publicfunctiontransTo2DNode(viewDistance:Number):E2DNode

  publicfunctiontransTo2DNode2(projectPos:Number):E2DNode

  publicfunctionrotateAroundZ(fi:Number):Void

  publicfunctionrotateAroundX(fi:Number):Void

  publicfunctionrotateAroundY(fi:Number):Void

  */

  //--selffunction--

  publicfunctionE3DPhyNode(inX:Number,inY:Number,inZ:Number)

  {

  x=inX;

  y=inY;

  z=inZ;

  }

  publicfunctionsetLife(lifeValue:Number):Void

  {

  life=lifeValue;

  }

  publicfunctiongetLife():Number

  {

  returnlife;

  }

  publicfunctionisLived():Boolean

  {

  returnlife==LIVED;

  }

  //-initializationfunctions-

  publicfunctioninitThisPtr():Void

  {

  thisP=this;

  }

  publicfunctioninitCom():Void

  {

  mMotionCom=newRCSMove();

  mColDetCom=newRCSColDet();

  }

  publicfunctioninitV_A(inVx:Number,inVy:Number,inVz:Number,inAx:Number,inAy:Number,inAz:Number):Void

  {

  this.vx=inVx;

  this.vy=inVy;

  this.vz=inVz;

  this.ax=inAx;

  this.ay=inAy;

  this.az=inAz;

  }

  publicfunctioninitPos(inX:Number,inY:Number,inZ:Number):Void

  {

  this.x=inX;

  this.y=inY;

  this.z=inZ;

  this.bufferX=this.x;

  this.bufferY=this.y;

  this.bufferZ=this.z;

  }

  publicfunctioninitRotateEle(inFn:Number,inAn:Number,inTheta:Number):Void

  {

  this.fN=inFn;

  this.aN=inAn;

  this.theta=inTheta;

  }

  //--moveandshowfunctions--

  publicfunctionmoveCal():Void

  {

  this.vx =this.ax;

  this.vy =this.ay;

  this.vz =this.az;

  this.bufferX =this.vx;

  this.bufferY-=this.vy;

  this.bufferZ =this.vz;

  }

  publicfunctionmoveShow():Void

  {

  vartmp2DNode=newE2DNode(0,0);

  /*globalvarialbedepends:

  gNodeColor,gNodeTransparent,gOffsetX,gOffsetY

  */

  //1.cleartheoldnode

  //inauplever,globalclearmode.

  //2.updatetheposition,actually,thereisnoneedtousebufferx,y,zhereinflash.

  //butthedesignhereseemtobemoreflexible

  this.x=this.bufferX;

  this.y=this.bufferY;

  this.z=this.bufferZ;

  //3.redraw.

  tmp2DNode=this.transTo2DNode2(_root.gZProjectDis);

  _root.gBrush.moveTo(_root.gOffsetX Number(tmp2DNode.x)-1,_root.gOffsetY Number(tmp2DNode.y) 1);

  _root.gBrush.lineTo(_root.gOffsetX Number(tmp2DNode.x) 1,_root.gOffsetY Number(tmp2DNode.y)-1);

  }

  //--checkfunctions--

  publicfunctionoutDetect():Boolean

  {

  if(this.y>400)

  returntrue;

  else

  returnfalse;

  }

  //--otherultimovingfunctions--

  publicfunctionaccTheta(detaAng:Number):Void

  {

  this.theta =detaAng;

  }

  publicfunctioncalANXZ():Void

  {

  this.aNXZ=(this.vx*this.vx this.vz*this.vz)/Math.sqrt(this.x*this.x this.z*this.z);

  }

  publicfunctioncalRXZ():Void

  {

  this.rXZ=Math.sqrt(this.x*this.x this.z*this.z);

  }

  publicfunctioncalAxAzInRotate():Void

  {

  this.aN=(this.vx*this.vx this.vz*this.vz)/Math.sqrt(this.x*this.x this.z*this.z);

  this.ax=this.aN*Math.cos(this.theta);

  this.az=this.aN*Math.sin(this.theta);

  }

  publicfunctioncalAxAzInRotate2():Void

  {

  this.ax=this.aNXZ*Math.cos(this.theta);

  &nb,sp;

  this.az=this.aNXZ*Math.sin(this.theta);

  }

  publicfunctionmoveWithY():Void

  {

  this.bufferX=this.rXZ*Math.cos(this.theta);

  this.bufferZ=this.rXZ*Math.sin(this.theta);

  }

  publicfunctionmoveCalFermatSpiralWithY():Void

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!