Flash实例:“随机树”生成

2008-04-02 11:06:23来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  用程式随机生成树冠,说明一下,元件“树”里的dp值控制树枝生长的深度,越高的话则分的越多,但请注意,dp超过13就有可能造成FLASH运行缓慢。

  效果:

  

  

  


  我解释一些代码的用处,以“右叉”的最后一帧代码来解释。

  

stop();

  if(dp>0){//dp用来控制树枝的生长,当dp<0的时候,树枝将不在分裂生长。

  //以下是正上方新树枝的代码

  k=random(4) 1;//k用来选择树形,分别是直形,左分形,右分形和中分行。

  _parent.attachMovie("sz_0" k,"sz" _parent.dp,_parent.dp);//生成一个新的树枝。

  lik=_parent["sz" _parent.dp];//用LIK锁定这个树枝,方便以后控制

  rp=this._rotation 0;//rp是新的树枝的根坐标(黄点)相对于现在这个树枝根坐标(蓝点)的角度,此数值影响到将要新生成的新树枝的坐标。这里是以极坐标的角度来考虑的,因为该树枝的第一个点在正上方,所以修正值是0。

  lp=62;//在rp这个方向上,新树枝根坐标的距离。

  _parent.dp ;//深度控制,大家能够不用考虑

  lik._x=this._x lp*Math.sin(rp/180*Math.PI)*scal/100;

  lik._y=this._y-lp*Math.cos(rp/180*Math.PI)*scal/100;

  //以上算式计算的是新树枝的根坐标,具体意思请参考极坐标和直角坐标换算的方式。里面的scal是本树枝的缩放度。他会对坐标产生影响。

  lik.scal=this.scal*_parent.jian;//新树枝的缩放度要比当前树枝的缩放度小一些

  lik._xscale=lik.scal;

  lik._yscale=lik.scal;

  lik._rotation=rp random(30)-15;;//新树枝的角度是当前树枝的角度向左右各15度随机摆动。(就是-15到 15度)

  lik.dp=this.dp-1;//新树枝的生长度-1;

  //以下是右侧新树枝的代码

  k=random(4) 1;

  _parent.attachMovie("sz_0" k,"sz" _parent.dp,_parent.dp);

  lik=_parent["sz" _parent.dp];

  rp=this._rotation 20;//注意20度角度是这个新树枝的极坐标角度。

  lp=52;//52是距离

  _parent.dp ;

  lik._x=this._x lp*Math.sin(rp/180*Math.PI)*scal/100;

  lik._y=this._y-lp*Math.cos(rp/180*Math.PI)*scal/100;

  lik.scal=this.scal*_parent.jian;

  lik._xscale=lik.scal;

  lik._yscale=lik.scal;

  lik._rotation=rp random(30) 5;;//角度会向右偏一些,所以是当前角度增加5到35之间

  lik.dp=this.dp-1;

  }

  Flash实例:“随机树”生成

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Flash3d效果出色实例

下一篇: FlashAS学习:对于TREE组件的一点整理