无法使用比较运算符检测AS3中的位置

时间:2013-06-22 02:28:10

标签: actionscript-3 if-statement

我在屏幕顶部制作了5个“endzones”,但它们根本没有被检测到。拍摄区域后,它将被锁定。

像safeX()这样的函数会使xsafe变量等于1,因此它们在被采用后将停止工作,但只有最后一行是跟踪。它们是预定的位置,所以它应该工作,但它总是跳到最后的“其他”。我不知道该代码有什么变化,它在程序的其他地方工作但不在这里:

if (-5 > man.x && man.x > 25) {
    if (onesafe == 0) {
        safeOne();
        trace("1 done")
    } else {
        deadMan();
        trace("1 full")
    }
} else if (55 > man.x && man.x > 85) {
    if (twosafe == 0) {
        safeTwo();
        trace("2 done")
    } else {
        deadMan();
        trace("2 full")
    }
} else if (115 > man.x && man.x > 145) {
    if (threesafe == 0) {
        safeThree();
        trace("3 done")
    } else {
        deadMan();
        trace("3 full")
    }
} else if (175 > man.x && man.x > 205) {
    if (foursafe == 0) {
        safeFour();
        trace("4 done")
    } else {
        deadMan();
        trace("4 full")
    }
} else if (235 > man.x && man.x > 265) {
    if (fivesafe == 0) {
        safeFive();
        trace("5 done")
    } else {
        deadMan();
        trace("5 full")
    }
} else {
    deadMan();
    trace("last row");
}

这是在Action Script 3中

1 个答案:

答案 0 :(得分:0)

它跳到最后else,因为所有条件都是不可能的。我认为您的某些><标志会向后倾斜。

例如,在第一个if中,您检查-5 > man.x,或man.x是否 -5。然后,检查是否man.x > 25。此变量不能同时小于-5且大于25。

也许你想说if (-5 < man.x && man.x < 25)

更清楚的方式是if (man.x > -5 && man.x < 25)。当您将变量放在常量之前进行比较时,可以更容易地看到这样的错误。