看板 Flash 關於我們 聯絡資訊
※ 引述《tomatos ()》之銘言: : (問題一) : 按下btn之後從元件庫裡抓出box : box必須整齊排成4x4 : 我只會排出橫坐標 第二個問題在上一位的文章中寫得很詳細了, 所以我就不再多寫,這篇單就第一題提供我自己的作法。 以這題來說,我個人比較喜歡for迴圈裡i < 16,所以程式大致如下: var STG = this; // 宣告一個變數來代替目前的stage var col : Number = 4; // 一行有幾個 var row : Number = 4; // 總共幾行 function removeBox (){ //讓物件消失 this._visible = false; // 或是讓物件透明 this._alpha = 0; // 或是直接移除物件 removeMovieClip(this); } function addimgs (){ // 宣告for迴圈裡的i起始為0,最大不超過16 for (var i = 0; i < col*row; i++){ // 宣告變數同時attachMovie var box : MovieClip = STG.attachMovie('box', 'box' + i + '_mc', STG.getNextHighestDepth()); // 賦予物件變數 box.i = i; // 用餘數去判斷物件的x座標 box._x = 101*(box.i - int(box.i/col)*col); // 用商數去判斷物件的y座標 box._y = 101*(int(box.i/col)); // 按下物件讓物件消失 box.onRelease = removeBox; } } btn.onRelease = function (){ addimgs(); } 用餘數和商數判斷座標感覺起來很吊書袋,其實簡單地說就是如下圖示: 0 1 2 3 → 第0排,餘數0 1 2 3 4 5 6 7 → 第1排,餘數0 1 2 3 8 9 10 11 → 第2排,餘數0 1 2 3 12 13 14 15 → 第3排,餘數0 1 2 3 因此如果現在col或是row改變,只要給col或是row新的值即可, 程式不需要改寫。 0 1 2 3 4 → 第0排,餘數0 1 2 3 4 5 6 7 8 9 → 第1排,餘數0 1 2 3 4 10 11 12 13 14 → 第2排,餘數0 1 2 3 4 用單一個for迴圈作計算而不用雙迴圈的原因, 主要是因為我到目前專案遇到的情況來說, 常常都是要parse程式傳來的xml之後存成陣列,然後再去讀取, 這時候box上面的i值就非常有用了,因為i值就等於陣列裡的位置, 所以要讀取陣列裡的資料就非常方便, 只要在for迴圈裡加入下列的程式碼: box裡的title_txt顯示陣列裡每筆資料的title box.title_txt.text = dataArray[box.i].title; box裡的comment_txt顯示每筆資料的comment屬性 box.comment_txt.text = dataArray[box.i]['comment']; box裡的某物件停在指定的位置 box.icon_mc.gotoAndStop(dataArray[box.i].icon); 外load圖片或是swf imgLoader.loadClip(box.img_mc, dataArray[box.i].imgSrc); 以上為個人的一點心得,提供給你做參考。 ps. 題外話,現在版上關於as3.0的提問越來越多了,快趕不上了|||囧> -- 某T:我喜歡妳>/////< :You gotta try harder...╮(╯_╰)╭ 某T:啥?試著硬一點>///<(羞) :是叫你再努力一點啦<(# ̄皿 ̄)╮☆(__ __||) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.63.2 ※ 編輯: terrylchen 來自: 59.124.63.2 (11/20 10:06) ※ 編輯: terrylchen 來自: 59.124.63.2 (11/20 10:07)
etrexetrex:推 11/20 13:01