【发布时间】:2014-02-09 22:44:41
【问题描述】:
大家好,所以我有一个名为 checkPlayerHitFish(); 的函数,当 fish 与 playerHook 接触时,它控制 hitTest。
有多个鱼被添加到舞台并由计时器控制。
这是函数的代码:
stage.addEventListener(Event.ENTER_FRAME, gameLoop);
private function gameLoop(e:Event):void
{
checkPlayerHitFish();
checkFishHitBucket();
checkMainFishOffScreen();
}
private function checkPlayerHitFish():void
{
//loop through all our fishes
for (var j:int = 0; j < aFishArray.length; j++)
{
//get current fish in j loop
var currentFish:mcMainFish = aFishArray[j];
//test if current fish is hitting current playerhook
if (currentFish.hitTestObject(playerHook))
{
trace("hit initialized");
currentFish.stopFish();
currentFish.x = playerHook.x;
currentFish.y = playerHook.y;
}
}
}
正如你在 if 语句中看到的那样,一旦鱼撞上钩子,它的位置就会改变,鱼现在附着在钩子上并跟随它。这正是我想要它做的。
现在我遇到的问题是,一旦其中一条鱼连接到钩子上,我不想再让鱼被允许用钩子进行 hitTest。所以基本上我希望 hitTest 一旦它已经连接了一条鱼就停止。
我似乎无法弄清楚我在想可能添加一个布尔值或删除 eventListener 但是当我在函数中添加 removeEventlistener if 语句时它可以工作,但它会阻止鱼被附加到钩子上。所以它确实会捡起它击中的鱼,但它只是停止附着在它上面,不再跟随它。
关于如何做到这一点的任何想法,以便我可以拿起一条鱼,然后阻止所有其他 hitTest 与其他鱼的发生。我希望这种情况发生,因为我希望用户一次只能捡起一条鱼,然后将它们放在桶中,然后一旦放下就可以回去捡起另一条鱼。
【问题讨论】:
标签: actionscript-3 flashdevelop