2011-10-25 44 views
0

我有一個MovieClip。它代表跳躍怪物的動畫。爲了清楚起見,讓我們假設只有2個幀:第一個佔據左上矩形(x = 0,y = 0,w = 70,h = 70),第二個佔據(x = 100,y = 0,w = 70,h = 70)。所以怪物從左邊跳到右邊。並且MovieClip本身的位置不斷=(0,0)。 我想用鼠標點擊怪物時觸發一些事件。Actionscript 3.0 MovieClip命中測試

由於某種原因,我有階段鼠標監聽器,而不是怪物鼠標監聽器。 我寫了這個代碼:

stage.addEventListener(MouseEvent.CLICK, onClick); 

private final function onClick(e:MouseEvent):void 
{ 
    const clickPos:Point = new Point(e.stageX, e.stageY); 
    // having monster:MovieClip, how do I check hitting it? 
    // code below doesn't work 
    // const r:Rect = new Rectangle(monster.x, monster.y, 
    //        monster.width, monster.height); 
    // const hitTest:Boolean = r.containsPoint(stagePoint); 
    // because r is always (0,0,70,70) 
} 

回答

1

代替stage.addEventListener,應用監聽到你的monster:MovieClip打電話給你的onClick處理程序用鼠標點擊怪物時。

monster.addEventListener(MouseEvent.CLICK, onClick); 

你可以通過x和y座標來測試你的怪獸對一個點。 「shapeFlag」的第三個參數用於檢查對象(true)或邊界框(false)的實際像素。

monster.hitTestPoint(x, y, true); 

或者擊中測試另一個顯示對象

monster.hitTestObject(obj); 
+1

哎呀,似乎有點複雜。 hitTestPoint(「shapeFlag」)的第三個參數僅適用於矢量圖形。但我的怪物的框架是光柵。因此,即使點擊了我的怪物的透明像素,hitTestPoint也會觸發。我該如何解決它? – Nick