flash as 初步学会教程 三个实际的例子解释

更新时间:15-10-23 15:42 热度:441
 

  一、画正玄图象,由外部输入扼制起点横坐标、震幅和跨度。15102315423860944952958 flash as 初步学会教程 三个实际的例子解释

  15102315423876594738024 flash as 初步学会教程 三个实际的例子解释

  思考的线索:我们可以在作业源手续中发觉:

复制代码

代码如下所述:

  …….
  moveto(100, 200); //正玄线的起点坐标为(100,200)可以把横坐标用一个变量(a)来表达
  ……..

  y = 200-100*math.sin(i*math.pi/180);//那里面100表决震幅体积,我们可以用变量(b)来表达;横坐标1个象数,对应表达1度的角度,在一个周期360度的条件下,假如横坐标1个象数对应几度,那末跨度显然会减小,就是说sin(i*math.pi/180)中i的系数表决跨度的体积,通过反反复复测试这个系数为360/c比较合理。因为这个,原来手续中的这两条可以改为:

复制代码

代码如下所述:

  moveto(a, 200);
  y = 200-b*math.sin(360/c*i*math.pi/180)


  为了能够重复运用这个画图手续,显然我们应当用自定义函数,上头的三个变量就可以做为参变量。

  敞开源手续3.7.1.fla文件,这处只记与作业不一样的地方:

  第一帧上:

复制代码

代码如下所述:

  a = b=c=”"; //对输入文本变量赋初值
  function huaxian(a, b, c) { //自定义函数,函数名为huaxian,参变量为三个文本变量
   …………
  y = 200-b*math.sin(360/c*i*math.pi/180);//b表决震幅,c表决跨度
   …..
  if (i>c) { //超过360度时(由360/c*i>360计算获得i>c)
   delete onenterframe; //删去事情
  }
 };
}
  huaxian(100, 100, 360); //先画一个正玄图象

  按扭上的脚本代码:

复制代码

代码如下所述:

  on (release) {
   if (c<36) {
    web = “请输入36以上的平头数”; //跨度太小,图象误差太大
   } else {
    web=”"
    _root.huaxian(number(a), number(b), number(c));//调自定义函数,况且把那里面参变量转化为数字
  }
 }

  二、把书契和下边的mc的位置都作别作恣意的排列

  15102315423876594738024 flash as 初步学会教程 三个实际的例子解释

  思考的线索:思索问题mc位置的乱排,这些个mc的纵坐标都相同,因为这个,我们主要思索问题乱排横坐标。我们把这些个mc的6个横坐标放入一个数组,用上一节讲的方法,很容易成功实现乱排的效果。

  敞开3.7.1.fla文件

  在第一帧上的脚本代码为:

复制代码

代码如下所述:

  stop();
  i = 0;
  w_arry = [30, 110, 190, 270, 350, 430]; //把文本的横坐标作为一个数组
  for (t=1; t<7; t++) {
     m = math.floor(math.random()*w_arry.length);//从数组中恣意选出一个编号
     this["wz"+t]._x = w_arry[m]; //把数组中这个编号的元数作为这个文本的横坐标
     w_arry.splice(m, 1);     //从这个数组中删除这个元数;
     this["wz"+t]._y = 30;    //设置这个文本的纵坐标
   }
  tx_arry = [76, 156, 236, 316, 396, 476]; //与上头大致相同;
  for (s=1; s<7; s++) {
   m = math.floor(math.random()*tx_arry.length);
   this["tx"+s+"_mc"]._x = tx_arry[m];
   tx_arry.splice(m, 1);
   this["tx"+i+"_mc"]._y = 320;
 }
  function stlx(md, mc) {  //设置自定义函数
   md.x = md._x;      //影片儿剪接的坐标用这个影片儿剪接下的变量x,y来保留
   md.y = md._y;
   md.onpress = function() { //鼠标在md上按下时;
    startdrag(this, true);  //拖动这个md;
   };
   md.onrelease = function() { //鼠标在md上松开时;
     stopdrag();       //休止拖动;
     if (md.hittest(mc)) {  //假如md和mc交错还是层叠;
       if (md.k != 1) {   //又假如md下的变量k不等1的话;
         i++;       //变量i加1;
         md.k = 1;     //使md下的变量k=1;
        }
       if (i == 6) {     //假如i等于6;
         nextframe();//到下一帧停下;
       }
    } else { //假如md和nc不层叠还是相交;
     md._x = md.x; //把md原来的坐标赋给md(回到原来的位置)
     md._y = md.y;
    }
   };
  }
   for (j=1; j<7; j++) { //相当于在6个mc上调自定义函数
    stlx(this["tx"+j+"_mc"], this["wz"+j]);
   }
  /* 例如,j=1,那末就是:
   stlx(this.tx1_mc,this.wz1)
  */

  三、这四个元件着手顺着次序播放时,一个终了到额外一个着手的时间 间隔就能等于输入 的时间 ?随机播放的时刻 一个终了到另一个播放的时间 的间隔也等于输入 的时间

  15102315423876594738024 flash as 初步学会教程 三个实际的例子解释

  思考的线索:

  办法1 可以在4个元件的最终一帧上加脚本代码,使额外的元件隔一定时间着手播放;

  办法2 可以运用(帧频)事情处置函数来监视检测,假如影片儿的现时帧等于总帧数,那末这个影片儿播放完结,让其他影片儿着手播放。用办法2比较简单。

  敞开 3.7.3fla文件:

  在第一帧上的脚本代码为:

复制代码

代码如下所述:

   yp_array = [aa, bb, cc, dd]; //把4个mc作为数组yp_array的元素;
   time = “”;
   i = 0;
   function du() {       //自定义函数du
    yp_array[i].play();    //播放数组yp_array中第i个mc
    yp_array[i].onenterframe = function() { //对这个mc运用事情处置函数
      if (this._currentframe == this._totalframes) { //假如这个mc的现时帧等于总帧数;
        sj = setinterval(du, time*1000);  //间隔time*1000毫秒调这个自定义函数du;
        delete this.onenterframe;     //删去事情;
       }
    };
  clearinterval(sj);           //扫除净尽时间间隔函数
   i++;
 }
   function duing() {
    k = math.floor(math.random()*yp_array.length);
           //依据数组yp_array的长度,挑选一个随机数k;
    yp_array[k].play();         //数组yp_array中的第k个mc播放
    yp_array[k].onenterframe = function() {  //对这个mc运用事情处置函数
      if (this._currentframe == this._totalframes) { //假如这个mc的现时帧等于总帧数;
        sjing = setinterval(duing, time*1000); 
            //间隔time*1000毫秒调这个自定义函数duing;
        delete this.onenterframe; //删去事情;
       }
     };
   yp_array.splice(k, 1);  //从数组yp_array中删去第k个元数
   clearinterval(sjing);  //扫除净尽时间间隔函数
  }

  在按扭“顺着次序播放”上的脚本代码:

复制代码

代码如下所述:

  on (release) {
   yp_array = [aa, bb, cc, dd];//从新给数组yp_array赋值
   clearinterval(sjing);
     //删去随机播放时的时间间隔函数;这两句是避免先按“随机播放”后出错。
   i = 0; //从新给变量赋值。
   if (time != “”) {
    du(); //调函数du
   }
  }

  在按扭“随机播放”上的脚本代码:

复制代码

代码如下所述:

 on (release) { //与“顺着次序播放”按扭上的脚本代码大致相似
  yp_array = [aa, bb, cc, dd];
  clearinterval(sj);
  i = 0;
  if (time != “”) {
   duing();
    }
  }

  15102315423895364122046 flash as 初步学会教程 三个实际的例子解释