Re: [問題] hitTest問題

看板Flash作者 (藍玥)時間18年前 (2008/02/13 14:36), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/8 (看更多)
※ 引述《mankitu (嗯哼 7。)》之銘言: : 我想做一個便當遊戲 : 左邊有一個便當盒 右邊是一些食材 : 當右邊的食材hitTest到左邊便當盒(有很多感應物件)時,會stopDrag, : 然後食材會跟感應區的座標一樣 : 可是我遇到瓶頸了 就是我不會寫函數 : 我預計左邊有20個感應區 右邊有二十個食材 如果一個一個寫上去我就喵掉了 : 墾求各位大大的幫忙 謝謝 拜託了!! : 下面是目前我能做到的(汗) : http://www.nhcue.edu.tw/~u9215042/question.rar 我不知道你的意思是不是說 讓它拉動 然後拉到左邊感應區 若它碰到那個感應區 便會在那個感應區的位置這樣 不過 以你的程式來看 因為感應區大小與被感應的大小並不相同 若是要以整個元件來感應 一個食材有可能感應到多的感應區 因此這方面你應該做些設定 若是你想要使用迴圈處理要做相同動作的不同元件 可將元件名稱取為a1、a2、a3等等... 然後用for迴圈加上eval("a"+i)來呼叫各個元件 下面是我撰寫的程式 我將你的b1、c1改名為b1、b2、b3.... 然後將所有元件上的程式碼刪除 ------------------------------------------ stop(); for(var i=1;i<=20;i++){ eval("b"+i).onPress=function(){ this.startDrag(); } eval("b"+i).onRelease=function(){ d_target(this._name); } } function d_target(MC_name){ eval(MC_name).stopDrag(); for(var i=1;i<=20;i++){ if(eval(MC_name).hitTest("/a"+i)) { eval(MC_name)._x=eval("a"+i)._x; eval(MC_name)._y=eval("a"+i)._y; break; } } } --------------------------------------------- 不過因為你感應區與圖像大小不同 所以感應會出些問題 我是建議你可以用兩種方式去解決這問題 一種是將圖像做成符合感應區大小的元件 二是在每個元件裡新增一感透明應區 然後使用元件內的感應元件做為感應判斷主體 以上 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.117.9.209

02/13 14:38, , 1F
唔 上面的大大動作比我快
02/13 14:38, 1F
文章代碼(AID): #17ie_QEl (Flash)
討論串 (同標題文章)
文章代碼(AID): #17ie_QEl (Flash)