启动后如何删除HitTestObject

内森

嘿大家,所以我有一个叫做函数的函数checkPlayerHitFish();,它fish在接触playerHook

有多个鱼被添加到舞台并由计时器控制。

这是该函数的代码:

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一旦已经连接了一条鱼就停止。

我似乎无法弄清楚这一点,我在想可能要添加一个布尔值或删除eventListener,但是每当我在if语句的函数内部添加removeEventlistener时,它都会起作用,但它会阻止鱼附着在钩子上。因此,它确实捡起了它撞到的鱼,但随后它不再附着在它上面,不再跟随它了。

关于如何执行此操作的任何想法,这样我就可以捡起一条鱼,然后停止其他所有hitTest与其他鱼的发生。我希望发生这种情况,因为我希望用户一次只能捡起一条鱼,然后将它们放到水桶中,一旦放下,就可以返回并捡起另一条鱼。

米克·马龙(MickMalone)

如您所说,最简单的解决方案是一个布尔变量,以指示是否捕获了一条鱼,但是您还需要对捕获的鱼的持久引用,而不是布尔值,您可以简单地检查此引用是否为null或不:

在最顶部添加以下内容:

var caughtFish:mcMainFish;//This will be 'null' at first, but that's what you need.

然后,修改您的游戏循环功能:

private function gameLoop(e:Event):void 
    {
        if(caughtFish == null)
            checkPlayerHitFish();
        else
            trackFish();//We'll make this function in a moment

    checkFishHitBucket();
    checkMainFishOffScreen();
}

这样,程序将仅运行循环以检查当前是否没有捕获到鱼。现在,您可以修改checkPlayerHitFish内部的条件:

if (currentFish.hitTestObject(playerHook))
{

    caughtFish = currentFish;//Make caughtFish point to this fish
    currentFish.stopFish();//Not sure what this function does?

}

...最后,您可以添加一个新函数trackFish(),当且仅当catchFish不为null时,该函数才能控制鱼的位置-因为我们只是将其指向currentFish,所以它不再为null!

function trackFish(){
    caughtFish.x = playerHook.x;
    caughtFish.y = playerHook.y;
}

这也将允许您删除侦听器-之前中断了侦听器,因为没有持久引用到捕获的鱼(caughtFish),因此每个帧都将再次测试碰撞。一旦玩家抓到一条鱼,它就不再需要检查碰撞。

当玩家将鱼放到水桶中时,只需添加以下语句即可:

caughtFish = null;

...这会将程序设置为再次查找冲突。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

启动后如何删除HitTestObject

来自分类Dev

即使删除后,如何从启动选项中删除“ ubuntu”?

来自分类Dev

在Windows 10中删除Ubuntu分区后如何从启动菜单中删除“ Ubuntu”(双启动)

来自分类Dev

在Windows 10中删除Ubuntu分区后如何从启动菜单中删除“ Ubuntu”(双启动)

来自分类Dev

在UEFI系统上删除Windows后如何启动Ubuntu

来自分类Dev

Ansible-启动后如何删除Docker容器?

来自分类Dev

Windows双重启动后如何从启动菜单中完全删除Ubuntu

来自分类Dev

分区后如何启动

来自分类Dev

格式化fedora磁盘后如何从启动菜单中删除fedora?

来自分类Dev

删除Ubuntu启动驱动器后如何创建或恢复Windows Bootloader

来自分类Dev

删除启动驱动器后,如何修复计算机?

来自分类Dev

重新启动程序后如何不删除.TXT文件的内部

来自分类Dev

删除别名后,如何在不重新启动bash的情况下进行更新?

来自分类Dev

在Windows上重新启动后如何删除临时文件?

来自分类Dev

重新启动后如何从localStorage中删除一个值?

来自分类Dev

删除Windows分区后无法启动Ubuntu

来自分类Dev

删除磁盘后无法启动

来自分类Dev

删除Windows后启动问题

来自分类Dev

删除ubuntu后无法启动进入Windows

来自分类Dev

交换删除后 Ubuntu 启动缓慢

来自分类Dev

如何删除删除Windows启动分区后剩下的零尺寸不可见分区

来自分类Dev

安装后如何启动Splunk

来自分类Dev

如何删除双启动菜单?

来自分类Dev

如何删除双启动菜单?

来自分类Dev

如何删除SystemC启动文本

来自分类Dev

如何暂时删除双启动?

来自分类Dev

如何删除启动盘?

来自分类Dev

删除Windows双重启动后,删除grub菜单

来自分类Dev

hitTestObject如何对许多对象起作用?

Related 相关文章

  1. 1

    启动后如何删除HitTestObject

  2. 2

    即使删除后,如何从启动选项中删除“ ubuntu”?

  3. 3

    在Windows 10中删除Ubuntu分区后如何从启动菜单中删除“ Ubuntu”(双启动)

  4. 4

    在Windows 10中删除Ubuntu分区后如何从启动菜单中删除“ Ubuntu”(双启动)

  5. 5

    在UEFI系统上删除Windows后如何启动Ubuntu

  6. 6

    Ansible-启动后如何删除Docker容器?

  7. 7

    Windows双重启动后如何从启动菜单中完全删除Ubuntu

  8. 8

    分区后如何启动

  9. 9

    格式化fedora磁盘后如何从启动菜单中删除fedora?

  10. 10

    删除Ubuntu启动驱动器后如何创建或恢复Windows Bootloader

  11. 11

    删除启动驱动器后,如何修复计算机?

  12. 12

    重新启动程序后如何不删除.TXT文件的内部

  13. 13

    删除别名后,如何在不重新启动bash的情况下进行更新?

  14. 14

    在Windows上重新启动后如何删除临时文件?

  15. 15

    重新启动后如何从localStorage中删除一个值?

  16. 16

    删除Windows分区后无法启动Ubuntu

  17. 17

    删除磁盘后无法启动

  18. 18

    删除Windows后启动问题

  19. 19

    删除ubuntu后无法启动进入Windows

  20. 20

    交换删除后 Ubuntu 启动缓慢

  21. 21

    如何删除删除Windows启动分区后剩下的零尺寸不可见分区

  22. 22

    安装后如何启动Splunk

  23. 23

    如何删除双启动菜单?

  24. 24

    如何删除双启动菜单?

  25. 25

    如何删除SystemC启动文本

  26. 26

    如何暂时删除双启动?

  27. 27

    如何删除启动盘?

  28. 28

    删除Windows双重启动后,删除grub菜单

  29. 29

    hitTestObject如何对许多对象起作用?

热门标签

归档