分類  >  Web前端 >

3.8 as 多維數組跟雙重循環

tags:    時間:2013-12-10 14:59:25
3.8 as 多維數組和雙重循環

[url=http://bbs.flasher123.com/dispbbs.asp?boardID=10&ID=30956&page=1] 

本節問題討論交流 

 本講錄音下載 


源文件下載

    
[1b]  [/1b]
3.8 多維數組和雙重循環

   我們先看一個效果,如下圖:[/url]
  
  一 思考方法
   很顯然,我們用到了一個mc對另外一個mc的遮罩。它的原理是:在作為遮罩片的mc中,複製部分小方塊mc,並且隨機放置這些小方塊mc。當然,這樣的隨機放置不是任意的,必須滿足兩個條件:放置的位置不重複;能夠完全遮罩圖形。這裡的方法是:
  1 計算小方塊mc在作為遮罩片mc中順序放置的位置的坐標;
  2 把放置小方塊mc的坐標存放入一個數組,使這個數組的每一個元素都包括兩個數值(橫坐標,縱坐標)。因此,這個數組包括了小方塊所有的放置的位置。這裡,我們要用到2維數組的有關知識;
  3 複製小方塊mc,每複製一個mc,從2維數組中隨機選一個元素,把這個元素中的橫坐標和縱坐標分別賦給這個mc。
   二 例題
  打開源文件3.8.fla,在第2層的元件1內的第1幀上的腳本為:
 this.zfx_mc._visible = false;
 var temp_arry = new Array();//定義數組temp
  for (i=0; i
[url=/Files/BeyondPic/2006-11/21/3.8zy1.swf]             //從上到下共15行小正方形是20*20,圖片面積是400*300
    for (j=0; j
           //從庫中鏈接元件「tu」,鏈接到舞台的名稱為「tu」,深度為500
  _root.tu._x = 200;//把「tu」擺放在舞台中央
  _root.tu._y = 150;
  _root.tu.setMask(this);//設置本影片剪輯為遮罩,「tu」為被遮罩。
 this.onEnterFrame = function() {//本影片剪輯執行事件處理函數;
  duplicateMovieClip(this.zfx_mc, "zfx"+i, i);
        //複製本影片剪輯下的zfx_mc,複製后的名稱為"zfx"+i,深度為i;
   k = Math.floor(Math.random()*temp_arry.length);
        //在數組temp_arry中隨機選出一個元素的序號k
   this["zfx"+i]._x = temp_arry[k][0];
        //把在數組temp_arry中第k個元素的第1個值作為this["zfx"+i]的橫坐標;
   this["zfx"+i]._y = temp_arry[k][1];
        //把在數組temp_arry中第k個元素的第2個值作為this["zfx"+i]的縱坐標;
   temp_arry.splice(k, 1);//把數組temp_arry中第k個元素刪掉;
    i++;
   if (i == 300) {//一共需要複製300個mc
     delete this.onEnterFrame;//刪除本影片剪輯事件處理函數,釋放內存。
本文轉自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/1151.html

推薦閱讀文章

Bookmark the permalink ,來源:互聯網