0

我已经尝试了很长时间,但似乎无法弄清楚我做错了什么。第一个条件似乎也有效,但第三个条件失败。

function spriteAI1() {

                if (c2Sprite.position.x >= 30 && c2Sprite.position.x <= 450) { 
                c2Sprite.translateX( -10 );
                } else if (c2Sprite.position.x <= 30 && c2Sprite.position.x >= -450) {
                c2Sprite.translateX( 10 );
                } else if (c2Sprite.position.z = 30 && c2Sprite.position.x = 30) { 
                c2Sprite.remove;
                c2Sprite.clone;
                }
                else{}
            }   

            function spriteAI2() {

                if (c2Sprite.position.z >= 30 && c2Sprite.position.z <= 350) { 
                c2Sprite.translateZ( -10 );
                } else if (c2Sprite.position.z <= -30 && c2Sprite.position.z >= -350) {
                c2Sprite.translateZ( 10 );  
                } else if (c2Sprite.position.x = 30 && c2Sprite.position.z = 30) { 
                c2Sprite.remove;
                c2Sprite.clone;
                }
                else{}
            }   

我在线上遇到错误

else if (c2Sprite.position.x = 30 && c2Sprite.position.z = 30)

错误说invalid left hand in assignment。但另一个函数的行基本相同,不会产生错误。

4

1 回答 1

0

我可以在您的代码中看到两个问题。

首先,比较是使用==(双等号)完成的,而不是一个(即赋值)。这可能是你问题的根源。

其次,您的最后两个条件匹配一组共同的值(它们是intersected),在c2Sprite.position.x等于 30 的情况下,它将进入第二个“if”。它将匹配第三个的条件,但不会运行它。

确保您始终定义良好分离的条件组(除非这是您想要的行为)。

只是为了说清楚:

if (x >= 30) {
    /* this matches 30 and above */
}
else if (x == 30) {
    /* this won't execute on x == 30, because it entered the first "if" */
}

你应该这样做:

if (x > 30) {
    /* this matches numbers strictly greater than 30, i.e. 31, 32, 33... */
}
else if (x == 30) {
    /* this will match x == 30 */
}
else {
    /* any other value for x */
}
于 2013-09-25T23:07:53.667 回答