国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 辦公 > 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 高級教程"

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 繁昌县| 涞源县| 凭祥市| 河间市| 嘉荫县| 宝鸡市| 崇仁县| 沈丘县| 云林县| 石泉县| 丹凤县| 峡江县| 曲水县| 兰州市| 故城县| 上林县| 彩票| 大冶市| 苗栗县| 乌拉特后旗| 富蕴县| 丰城市| 常熟市| 鹿泉市| 武陟县| 和平县| 乌苏市| 毕节市| 韩城市| 新沂市| 浦江县| 克拉玛依市| 壶关县| 连州市| 湖口县| 德惠市| 界首市| 云阳县| 秦皇岛市| 太和县| 玛纳斯县|