如何限制else语句?-Javascript游戏

如何限制else语句?-Javascript游戏,javascript,performance,if-statement,optimization,Javascript,Performance,If Statement,Optimization,我正在寻找一个关于如何正确实现一个你站在上面的“按钮”(正方形),改变背景颜色的解释。我已经成功地实现了if语句,它改变了背景,但是当我添加一个else语句以在您不在按钮上时将其更改回正常状态时,它会重复运行而不停止 这同样适用于我遇到的另一个障碍,当你站在上面时,它会让你移动得更慢。当你不在障碍物上时,它会不断地改变变量,而不是改变一次 var重力=30; var跳线速度=17; var PlayerSpeed=7; Player.prototype.moveY=功能(步骤、级别、键、位置)

我正在寻找一个关于如何正确实现一个你站在上面的“按钮”(正方形),改变背景颜色的解释。我已经成功地实现了if语句,它改变了背景,但是当我添加一个else语句以在您不在按钮上时将其更改回正常状态时,它会重复运行而不停止

这同样适用于我遇到的另一个障碍,当你站在上面时,它会让你移动得更慢。当你不在障碍物上时,它会不断地改变变量,而不是改变一次

var重力=30;
var跳线速度=17;
var PlayerSpeed=7;
Player.prototype.moveY=功能(步骤、级别、键、位置){
这个.speed.y+=步长*重力;
var运动=新矢量(0,此.speed.y*步长);
var newPos=此.pos.plus(运动);
var障碍=level.obstacleAt(newPos,this.size);
var=null;
如果(障碍物){
if(key.up&&this.speed.y>0)
这个.speed.y=-jumpSpeed;
其他的
这个.speed.y=0;
}否则{
this.pos=newPos;
}
如果(障碍物==“熔岩”){
this.pos=新向量(6.5,18.5);
}
如果(障碍物==“保镖”){
this.pos=newPos+20;
console.log('bounce');
}
否则{
重力=30;
}
如果(障碍物==“冰”){
playerXSpeed=0.5;
console.log(“低速”);
}
否则如果(障碍物!==最后一个障碍物){
playerXSpeed=7;
console.log(“标准速度”);
}
var changeBackground=document.getElementsByClassName('background');
如果(障碍物==“盲板”){
changeBackground[0]。style.background='white';
console.log('purple');
}
否则如果(障碍物!==最后一个障碍物){
changeBackground[0]。style.background='blue';
console.log('blue');
}

};如果我正确理解了您的代码,它就在某个循环函数中

您可以添加一个变量“LastBarrier”,并检查当前障碍是否不同。(否则如果(最后一个障碍物!==障碍物)

var重力=30;
var跳线速度=17;
var PlayerSpeed=7;
var=null;
Player.prototype.moveY=功能(步骤、级别、键、位置){
这个.speed.y+=步长*重力;
var运动=新矢量(0,此.speed.y*步长);
var newPos=此.pos.plus(运动);
var障碍=level.obstacleAt(newPos,this.size);
如果(障碍物){
if(key.up&&this.speed.y>0)
这个.speed.y=-jumpSpeed;
其他的
这个.speed.y=0;
}否则{
this.pos=newPos;
}
如果(障碍物==“熔岩”){
this.pos=新向量(6.5,18.5);
}
如果(障碍物==“保镖”){
this.pos=newPos+20;
console.log('bounce');
}
否则{
重力=30;
}
如果(障碍物==“冰”){
playerXSpeed=0.5;
console.log(“低速”);
}
否则如果(障碍物!==最后一个障碍物){
playerXSpeed=7;
console.log(“标准速度”);
}
var changeBackground=document.getElementsByClassName('background');
如果(障碍物==“盲板”){
changeBackground[0]。style.background='white';
console.log('purple');
}
否则如果(障碍物!==最后一个障碍物){
changeBackground[0]。style.background='blue';
console.log('blue');
}
最后的障碍=障碍;

}
障碍物
不应该被称为
表面
?然后我又一次不知道什么是“盲”意味着…或者更好地切换到基于对象和事件的编码,就像这里一样。你能不能发布更多的代码,这样我们就可以看到if-else语句的调用位置了?看起来你的代码在做一个无限循环为什么你需要不断地改变背景变量,而不是在玩家离开它时改变它一次?@user3362334我不希望它不断地改变。我只希望它在你踏上它时改变,在你离开它时改变。我用整个函数更新代码。对不起,我本可以更好地解释它。没有lo函数中的op。调用该函数是为了检查玩家在哪个面上。我将用完整的函数更新帖子。@KyleSteward但该函数何时调用?它只是不断地调用,以检查玩家是否跳到某个障碍物上。我更新了我对代码的回答。您需要在函数之外定义LastBorder以防止每次都被重置。我无法测试此代码,但我认为它是有效的。它是有效的!谢谢。现在我要问它是如何工作的,这样我才能真正理解我在做什么。