[flash]movieClip的碰撞與重疊

LINEで送る
[`evernote` not found]

一般來說,我們要在flash中兩個movieClip是否產生了碰撞或重疊
我們會使用hitTestObject()或是hitTestPoint()
但是hitTestObject()的範圍固定在矩形,在很多狀況下並不適合
hitTestPoint()雖然可以破除矩形的限制
但只能做movieClip跟point的判斷
為了解決這個問題
有人就開發了好用的class出來分享啦!!
as2版as3版(我當然是用as3來測試囉!)


真的是讓這件事情變得無比的愉快
只要判斷:

	if(HitTest.complexHitTestObject(hit_mc1, hit_mc2 , 5)){
		//撞到了!
	}else{
		//還沒還沒....
	}

就可以做你想做的事情啦
只有一點是要注意的
HitTest只能判斷movieClip類別的碰撞
也就是說如果是用addChild出來的物件必須在轉形回movieClip才能用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function makeCamera():void{
		var num:Number =runNum(5);
		var c:MovieClip = new camera();
		c.gotoAndStop(num);
		c.x = runNum(190);
		c.y = runNum(27)+70;
		c.rotation = runNum(359);
		c.addEventListener(Event.ADDED_TO_STAGE,killOrNot);
		this.addChild(c);
}
 
function killOrNot(e:Event):void {
	if(HitTest.complexHitTestObject(MovieClip(e.target), hit_mc , 5)){
		cameraArr.push(e.target);
	}else{
		e.target.parent.removeChild(e.target)
	}
}

46 則迴響於《[flash]movieClip的碰撞與重疊

  1. 可以問個問題嗎..

    我最近再用一個詞曲同步..

    按播放 跟 發佈看都沒有問題 可是測試影片 卻發現實際上會慢一~兩秒

    可以幫忙解惑嗎= =??

    其實我也找了很多資料

    我看網路上有些說再放音樂的影格上面 再由事件=>串流之後

    就會跑出”SWF 包含一個聲音項目的多個副本” 請問是什麼意思= =??

    • 我不太懂發佈跟測試影片不是一樣嗎?

      也不知道”SWF 包含一個聲音項目的多個副本”是啥意思耶@@

      我是建議用AS控制試試看可不可以解決時間差的問題!

  2. 版大!!多謝!!我釐清了這部分的觀念!!
    不過我碰到更詭異的..我總覺得我要去拜拜了 XD
    就是 我設定主角揮出劍氣5道 上下左右方向都有設定
    但是只有往上揮時 會出現 null…那個訊息
    後來我慢慢檢查..發現往上揮的其中一個影格..只能有三道劍氣!!!
    而且是只有那個影格!!!
    如果5道 4道就會出現null…但是三道就可以!!!
    可是其他方向5道都沒問題呀..
    這到底是 ~~~~~~~ XD 農曆七月嗎 XD

  3. 版大!!
    我最近仍在研究AS3中..目前正陷於邏輯與語法茫茫大海裡 orz
    不過我想請教一個應該算是基本的 可是書上都沒有提的問題 ..就是~
    如果我設定
    if (某條件){
    某_mc.某某_mc.gotoAndPlay();
    }
    那是不是某_mc所有的影格裡都必須要有某某_mc的存在呢?
    如果有個影格裡沒有某某_mc,是不是就會出現
    無法存取 Null 物件參考的屬性或方法。
    的錯誤訊息?
    這個問題我懷疑很久了說XD

    感激!!

    • 至少在你要某某_mc去gotoAndPlay的時候要存在某_mc中
      當然某_mc也要存在…
      不然…flash那知道某某_mc是哪位阿
      有怎麼叫他gotoAndPlay勒..

  4. 版大~我問題解決了!!

    匯出一切正常
    但是上傳到streetvoice後~卻無法執行..
    音樂依樣呈現混亂狀…這是為什麼呢!!?

  5. 喔喔~謝謝!!
    我昨天弄了一個搭配聲音的瑪莉兄弟!
    可是我匯出的時候出現”SWF 包含一個聲音項目的多個副本”
    版大~請問這是什麼意思呢?
    上傳到網路 本來安排好的聲音檔都會亂掉說!!
    多次叨擾..真是感激不盡!!

  6. 版大!!
    我發現一個很怪的現象…
    我上上個作品 設定主角死亡後flash回到第一個影格
    而為了讓場景都會恢復成原先的樣子,我還要在第一影個一個一個去抓元件的座標…但是剛剛做好的這個卻不用!!回到第一影格後..元件也都自動歸位了說! 兩個作品不同的地方在於 之前的是靠玩家去控制場景是否移動,現在的則是一播放場景就自己移動….其中的不同真是微妙啊!!!

  7. 版大~我研究了很久~因為我跳至第二場景的時候,第一場景的event好像還是會繼續執行,我想是不是要用 event.stopImmediatePropagation();來停止他的執行,我寫出來是這樣>>
    function stopevent(event:Event):void {
    event.stopImmediatePropagation();
    }
    stage.addEventListener(Event.ENTER_FRAME,stopevent);

    結果當然是無法執行@@”
    希望版大能只點一二!感激!!!

  8. 版大XD
    它不轉就你轉
    轉一下可能就過了
    我把這個列為我的座右銘!!!我繼續去奮鬥了!!!! ><

  9. 喔喔! 真是感謝阿!!
    唉~版大!不知道您學習的過程中有沒有跟我依樣~!常常遇到很無解的問題!
    像我曾經 只是在舞台上加了幾個中文,就變得無法測試影片!!!真的很怪!!
    還有同樣的線段,在舞台下方正常顯示,但是到了舞台上方卻無故變粗!!
    感覺好無力阿T_T orz

  10. 版大!經過您的指點我的小遊戲也快完成了!但場景測試時會出現這錯誤碼:
    TypeError: Error #1009: 無法存取 Null 物件參考的屬性或方法。
    at HitTest$/complexIntersectionRectangle()
    at HitTest$/complexHitTestObject()
    at _fla::MainTimeline/nextscene()
    唉~遊戲雖小,卻讓我一夜白髮阿!!
    又要請版大您指點指點了!! orz

  11. 版大XD
    真的可以拉XD 天阿~太愛您拉~~ XD 我想到頭殼要開花 腦將要沸騰拉XD
    等我把作品弄好 傳給網址給您瞧瞧XD

  12. 版大ˊˋ 不好意思又來麻煩您~
    因為我的書真的寫的很不清楚..我看書上寫的匯入as檔的介紹
    寫出這個>>var HIT:HitTest = new HitTest();
    結果果然無法執行~”~ HitTest在我的as裡面還是黑色字體..
    不知道版大願不願意再傳受一二 orz

    • 試試看這樣子的語法
      <object height=”60″ width=”190″ data=”xxx.swf” type=”application/x-shockwave-flash”><param value=”xxx.swf” name=”movie”/></object>

  13. 不知道版大當初是怎麼學習AS的呢~?
    我雖然買了幾本書,但是感覺寫得都不詳盡
    常常同樣的程式碼,在她的範例可以執行,我自己寫就無法執行~
    每次都想破頭..才能搞懂一個語法
    我也去知名電腦中心問過,但是她們程度都滿差的 >_<”
    去那裡學浪費錢…不知道版大有沒有什麼建議@@”

    • 我剛入門也是先到資策會的多媒體班上課
      當時教flash的是林新德老師
      在市面上也買的到他的書
      不過…多利用flash的F1…
      其實裡面也有很多東西可以慢慢看了

  14. 喔喔!!
    原來要有那個!!@@
    可是我不知道要怎麼使用那個檔案ㄝ..
    不知道版大可否撥冗相授!! orz
    先受小弟一拜 orz

    • 我把它的as檔放進來了(到文章中按下載)
      下載回去後跟要編輯的fla檔放同一個資料夾就可以用了
      不過正確的引用as檔案還是要翻一下書比較好喔!

  15. 大大XD
    不好意思 不知道為什麼留言被截掉一半
    我想請教的是..
    上面提到的HitTest 我key到AS3以後,她沒有變成藍色字體…
    是因為版本的關係嗎?我是CS3…感恩感恩!

  16. 大大~!
    請教一下!
    我最近也在學AS3
    可是有好多問題阿!!
    我買書來看,作者也都只有教一半>.<

    感恩!!

回應已關閉。