我想知道如果MOUSE_DOWN
事件等于true,如何在两个影片剪辑之间注册Hittest。
所以我有一个名为playerHook
的影片剪辑充当鼠标,每当该影片剪辑与另一个名为octopusBoss
的影片剪辑接触并点击它时,我希望它能够注册一个hittest,从健康状况中减去一点。
这是我到目前为止所做的但不确定下一步该做什么:
在我的主构造函数中:
playerHook.addEventListener(Event.ENTER_FRAME, playerHookMove);
playerHook.addEventListener(MouseEvent.MOUSE_DOWN, onMDown);
playerHook.addEventListener(MouseEvent.MOUSE_UP, onMUp);
然后我在两个函数onMDown和onMUp中设置了两个布尔值:
private function onMDown(e:MouseEvent):void
{
mouseIsDown = true;
}
private function onMUp(e:MouseEvent):void
{
mouseIsUp = false;
}
然后我有这个功能,目前在我的游戏循环中,我希望只有当用户点击OctopusBoss时才会发生:
private function checkPlayerHitOctopusBoss():void
{
if (playerHook.hitTestObject(octopusBoss))
{
trace("Hit Octopus");
octopusBossHealth --;
}else
if (octopusBossHealth <= 0)
{
octopusBoss.destroyOctopusBoss();
}
}
但我无法将鼠标布尔值传递给if
语句。我知道我错过了一些至关重要的东西!
答案 0 :(得分:1)
首先,您需要为octopusBoss
添加一些名称,如下所示:
octopusBoss.name = "octopusBoss"
;
修改onMDown
函数,如下所示:
private function onMDown(e:MouseEvent):void
{
if(e.target.name == "octopusBoss") //Check if octopusBoss is under mouse
mouseIsDown = true;
}
您的checkPlayerHitOctopusBoss
功能如此:
private function checkPlayerHitOctopusBoss():void
{
if (playerHook.hitTestObject(octopusBoss) && mouseIsDown) // check mouse down
{
trace("Hit Octopus");
octopusBossHealth --;
}else
if (octopusBossHealth <= 0)
{
octopusBoss.destroyOctopusBoss();
}
}
更新:
如果可以将MouseEvents
直接添加到octopusBoss
,就像这样:
octopusBoss.addEventListener(MouseEvent.MOUSE_DOWN, onMDown);
octopusBoss.addEventListener(MouseEvent.MOUSE_UP, onMUp);
然后,您还可以使用e.currentTarget.name
。