我已经尝试了很长时间,似乎无法弄清楚我做错了什么。第一个条件似乎有效但第三个失败了。
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
。但是另一个函数基本上是相同的行,并且不会产生错误。
答案 0 :(得分:0)
我可以在你的代码中看到两个问题。
首先,使用==
(双等号)进行比较,而不是一个(分配值)。这可能是你问题的根源。
在第二位,您的最后两个条件匹配一组共同的值(它们是相交),在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 */
}