Re: [問題] hitTest問題

看板Flash作者 (CJ Cat)時間18年前 (2008/02/13 04:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/8 (看更多)
看看這是不是你要的效果吧 線上觀看 http://0rz.tw/993Ga 原始檔案 http://0rz.tw/8e3H5 我用到的幾個重點如下: 0.我把所有code寫在影格上,然後各自MC上面的code都刪掉了 因為這樣看得比較清楚 1.將食物的名稱取為 b1, b2, b3 2.將感應區取名為 a1, a2, ..., a20 3.用for迴圈跑過每一個食物的onPress和onMouseUp來定義該handler 4.在上述的onMouseUp handler裡面再用for迴圈跑過每個感應區 如果該感應區與食物的hitTest()為true 則將該感應區的reference加入到一個叫做register的暫時陣列 之後選擇register中與食物距離最短的感應區 ( 算距離的函式 distance(mc1, mc2):Number 定義在code的最下面) 最後將食物的位置設定為該感應區的位置 ※其中在for迴圈裡面用到了"Associative Array"語法 簡單來說, this["abc"] 和 this.abc 是相同的意思 所以以下的code範例就是將 b1~b20 的_x值歸零 for(var i:Number = 0; i <= 20; i++) { this["b" + i]._x = 0; } 使用Associative Array語法應該就是你想要的解答 如此一來就不用同樣的code重複20次 畢竟,寫程式一大忌諱就是出現code duplication 同樣功能的code應該只出現一次才是最上策 -- CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓 Gallery http://cjcat2266.deviantart.com ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 70.181.86.161 ※ 編輯: cjcat2266 來自: 70.181.86.161 (02/13 04:40)
文章代碼(AID): #17iWBNxs (Flash)
文章代碼(AID): #17iWBNxs (Flash)