2011年10月7日 星期五

測試MovieClip 是否碰撞與重疊

測試MovieClip 是否碰撞與重疊, 我們一般使用內建的hitTestObject 或hitTestPoint. 可惜前者只能作矩形測試, 後者只能單點測試. 對於兩個複雜形狀, 便需要編寫特別手法處理.

國外有一高手, 編寫一個簡單處理手法, 名為HitTest 類別. 能為兩個複雜形狀, 進行碰撞與重疊測試.

使用方法:
import ws.tink.display.HitTest;

if(HitTest.complexHitTestObject( target1, target2 )){
  // <------ true
}else{
  // <------ false
}

類別內部處理手法:
  1. 在BitmapData 為target1 與target2 分別畫上兩個純色形狀
  2. 利用BlendMode, 使兩個純色重疊位置出現一種新顏色
  3. 最後使用getColorBoundsRect, 測試會否出現重疊的一種新顏色

測試實例:



大家可以 [下載] 看看, 這個方法速度上, 雖然比不上原生hitTestObject 與hitTestPoint.
但基本的一百個物件(x10) 進行重疊測試, 對HitTest 仍然卓卓有餘.
作者提供的使用技巧, 是很值得參考喔.

參考來源: http://www.tink.ws/blog/as-30-hittest/

沒有留言: