切换AS3的语句问题

时间:2013-06-17 16:43:29

标签: actionscript-3 if-statement switch-statement

我正在尝试使用switch语句进行简单的碰撞检测。该语句获取某个对象的y位置,然后检测对象的x是否与另一个对象相同。问题在于,即使条件不满足,我也会在if语句内部声明if语句。该对象应该在被敌人击中后被发送回起点(敌人正在通过屏幕移动)并以19的增量移动以满足该情况。问题是我似乎无法提升它,因为每当我遇到这种情况时它会不断被送回起始点(y = 221)。当我从switch语句中删除deadObject()时,它工作正常,只有当它遇到敌人时才打印“死”。我该怎么办呢?

我一直在互联网上寻找这个但是我找不到与switch语句中的if语句相关的任何AS3。谢谢你的帮助

public function enterFrame(me:Event)
    {
        position = objectA.y
        switch(position)
        {
            case 221:
                if (objectA.x == enemy1.x || objectA.x == enemy1.x + 10)
                    trace("dead1");
                    deadObject()
                if (objectA.x == enemy2.x || objectA.x == enemy2.x + 10)
                    trace("dead1");
                    deadObject()
                if (objectA.x == enemy3.x || objectA.x == enemy3.x + 10)
                    trace("dead1");
                    deadObject()
                break;
          }
     }

public function deadObject()
    {
        objectA.x = 133;
        objectA = 240;
    }

1 个答案:

答案 0 :(得分:2)

我认为这是一个简单的语法问题。你的解释器足够聪明,知道trace语句属于if语句,但是现在你引入了另一个函数而且它会混淆。

我的建议是始终遵循最佳做法并将括号放在他们所属的位置

另请参阅以下内容: Is it bad practice to use an if-statement without brackets?

    public function enterFrame(me:Event)
    {
        position = objectA.y;
        switch(position)
        {
            case 221:
                if (objectA.x == enemy1.x || objectA.x == enemy1.x + 10)
                {
                    trace("dead1");
                    deadObject();
                }
                if (objectA.x == enemy2.x || objectA.x == enemy2.x + 10)
                {
                    trace("dead1");
                    deadObject();
                }
                if (objectA.x == enemy3.x || objectA.x == enemy3.x + 10)
                {
                    trace("dead1");
                    deadObject();
                }
                break;
        }
   }