a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 辦公 > Flash > 正文

Flash AS 入門教程 三個實例講解

2020-07-17 13:13:42
字體:
來源:轉載
供稿:網友

  一、畫正玄圖象,由外部輸入控制起點橫坐標、震幅和跨度。源文件下載

  點擊查看動畫效果<

  思路:我們可以在作業源程序中發現:


復制代碼
代碼如下:

  .......
  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文件,這里只記與作業不同的地方:

  第1幀上:


復制代碼
代碼如下:

  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的位置都分別作任意的排列

  點擊查看動畫效果<

  思路:考慮mc位置的亂排,這些mc的縱坐標都相同,因此,我們主要考慮亂排橫坐標。我們把這些mc的6個橫坐標放入一個數組,用上一節講的辦法,很容易實現亂排的效果。

  打開3.7.1.fla文件

  在第1幀上的腳本為:


復制代碼
代碼如下:

  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)
  */

  三、這四個元件開始順序播放時,一個結束到另外一個開始的時間 間隔就能等于輸入 的時間 ?隨機播放的時候 一個結束到另一個播放的時間 的間隔也等于輸入 的時間

  點擊查看動畫效果<

  思路:

  方法1 可以在4個元件的最后一幀上加腳本,使另外的元件隔一定時間開始播放;

  方法2 可以使用(幀頻)事件處理函數來監測,如果影片的當前幀等于總幀數,那么這個影片播放完畢,讓其它影片開始播放。用方法2比較簡單。

  打開 3.7.3fla文件:

  在第1幀上的腳本為:


復制代碼
代碼如下:

   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();
    }
  }

  查看全套"Flash AS 高級教程"

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美国产视频 | 成人免费视频国产免费麻豆 | 性色av一区二区三区免费看开蚌 | 亚洲一区二区中文字幕 | 国产欧美精品一区二区 | 日韩精品视频在线免费观看 | 日韩中文字幕第一页 | 精品国产一区二区三区不卡蜜臂 | 日本美女一区二区 | 亚洲精品久久久一区二区三区 | 黄色高清视频 | 国产精品一区二区三区麻豆 | 午夜激情在线免费观看 | 久久精品国产一区二区电影 | 久久草视频 | 黄色大片网站在线观看 | 国产精品久久久久久久久久久久久久 | 日本少妇xxxx软件 | 国产区视频在线观看 | 黄篇网址 | 成人av片在线观看 | 成人欧美 | 青草视频在线观看免费 | 久久精品91 | 男女羞羞视频在线免费观看 | 日韩福利 | 久久久二 | 亚洲欧美日韩国产综合 | 欧美久久久久久久久中文字幕 | 国产在线观看一区 | 看毛片网站 | 日本精品一区二区 | 国产成人精品免费视频大全最热 | 日韩国产一区二区三区 | 天天射天天| 91精品久久久久久久99 | 91高清在线| 欧美日在线 | 丁香婷婷综合激情五月色 | 91久久久久| 久久久99精品免费观看 |