Flash AS 入门教程 圆和椭圆函数的应用

2019-10-08 14:23:58王旭

 }
  f1._xscale = f1._yscale=f10._xscale=f10._yscale=100;//放大复制后其中几个mc
  d5._xscale = d5._yscale=d15._xscale=d15._yscale=50;
this.onEnterFrame = function() {
  j++;
 for (k=1; k<21; k++) {
  this["f"+k]._x = 130*Math.cos(18*k*Math.PI/180+18*j*Math.PI/180);
  this["f"+k]._y = 130*Math.sin(18*k*Math.PI/180+18*j*Math.PI/180);
  this["d"+k]._x = 130*Math.cos(18*k*Math.PI/180-18*j*Math.PI/180);
  this["d"+k]._y = 50*Math.sin(18*k*Math.PI/180-18*j*Math.PI/180);
 }
 };

  角度中+18*j*Math.PI/180在帧频事件的循环中,每循环一次影片位置的角度增加18度。-18*j*Math.PI/180与前面方向相反。

  我们使圆和椭圆都旋转运动起来了,我们还可以不断改变圆的半径和椭圆的长、短轴,使圆和椭圆互相转换,或者其它的形状变化。有兴趣的可以参见3.3.3.fla文件。

  点击查看动画效果<

  例 3.3.3源程序脚本:


复制代码
  j = rotat=scale=0;//设置计数变量、旋转角度和放大系数的初始值为0;
  q = l=w=130;   //设置圆的半径和椭圆长轴(开始时的值)
  m = 50;     //设置椭圆短轴
  this.f_mc._visible = this.d_mc._visible=0;
  for (k=1; k<21; k++) {
   duplicateMovieClip(this.f_mc, "f"+k, k);
   duplicateMovieClip(this.d_mc, "d"+k, k+40);
  }
  f1._xscale = f1._yscale=f10._xscale=f10._yscale=100;
   //使复制的mc中是4个面积变大为4倍
  d5._xscale = d5._yscale=d15._xscale=d15._yscale=50;
this.onEnterFrame = function() {
 this._rotation += rotat;//使(f_mc的)父级mc旋转;
 this._xscale -= scale; //放大或者缩小(f_mc的)父级mc
 this._yscale -= scale;
  j++;
  for (k=1; k<21; k++) {
   this["f"+k]._x = q*Math.cos(18*k*Math.PI/180+18*j*Math.PI/180);
   this["f"+k]._y = l*Math.sin(18*k*Math.PI/180+18*j*Math.PI/180);
   this["d"+k]._x = w*Math.cos(18*k*Math.PI/180-18*j*Math.PI/180);
   this["d"+k]._y = m*Math.sin(18*k*Math.PI/180-18*j*Math.PI/180);
 }
  if ((j>40) && (j<=110)) {
   l -= 2.2; //圆的宽每次减2.2
   q -= 1;  //圆的高每次减1
   m += 1.2; //椭圆的短轴每次增加1.2
   w -= 1;  //椭圆的长轴每次减1
 }
  if ((j>110) && (j<=220)) {
   l += 2; //圆的宽每次加2
   m -= 1.5;//椭圆原来的短轴每次减1.2
   w += 0.7;//椭圆的长轴每次加0.7
 }
  if ((j>220) && (j<=260)) {
   q += 1;  //圆的高每次加1
   l -= 3.2; //圆的宽每次减3.2