2013-07-21 58 views
2

工作,我只是在AS3中添加一個精靈:hitTestPoint與「shapeFlag的=真」在AS3中不

Sprite myspr = new Sprite(); 
myspr.addChild(mybitmap); 
addChild(myspr); 

然後我說的事件。我確實hitTestPoint檢查鼠標是否結束我的精靈。

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseCheck); 

private function mouseCheck(evt:MouseEvent):void { 
    var xx:int = stage.mouseX; 
    var yy:int = stage.mouseY; 

    if(myspr.hitTestPoint(xx, yy, true)) { 
     ... 
     // I'm checking mouse over here. 
    } 

    evt.updateAfterEvent(); 
} 

問題是:hitTestPoint在鼠標到達完整邊界框時給出true。但只有當鼠標出現在透明的等軸測圖上時,它纔會成立。 http://i41.tinypic.com/2rmb0i0.png

有沒有這方面的解決方案,在此先感謝。

+0

+1圖片。我會在稍後閱讀你的問題 – ZuzEL

+0

myBitmap是一個圖像嗎?我認爲造型標誌適用於本質上爲矢量的形狀,例如使用Flash Professional中的工具繪製的形狀,使用諸如beginFill,lineTo等圖形指令繪製的形狀。 – catholicon

+0

@catholicon mybitmap是一個Bitmap對象。它的bitmapData是一個透明的PNG。 –

回答

0

還有我平時打測試的幾種方法。

1)最簡單的方法是使用一個已經創建的類,你可以在網上找到它。一些比我更聰明的人已經創建了複雜的類,以實現更好的像素到像素的交互。 Paras列出的都很好。這些問題對於新用戶來說,很難理解所有的代碼以及如何實現它們。一旦你明白髮生了什麼,通常很簡單。你只需用類文件替換你的命中測試,然後輸入正確的參數。

2)另一種方法是實際進入符號,創建一個新圖層,然後繪製一個矩形(只需將alpha減少到0%),以便使命中測試正常工作。這可能看起來像一個愚蠢的方法,畢竟我們只是再次被限制在廣場上。但是,它實際上會比你想象的要好得多。只要畫出正方形,你的角色的高度和寬度可能略小於你正在檢測的命中測試,你應該很好。給它一個實例名稱(即正方形),然後用該方塊執行hitTest,而不是實際的精靈。它奇妙地工作,並且是一個非常簡單的解決方案。對於你正在解釋的事情,這聽起來像可能不起作用。這種方法更多地來自玩家的立場。攻擊和被敵人擊中時看起來不錯,但不一定準確。另外,如果你想用兩個角色(可能是一次大的攻擊擊中一個敵人)來完成這個任務,只需爲兩個精靈繪製一個點擊框即可。這可能比使用預製像素完美命中檢測測試更基本一些,但它工作得非常好,只需要幾分鐘。