gpt4 book ai didi

javascript - 如何在 JS 中的每个 switch 语句中包含一些内容?

转载 作者:行者123 更新时间:2023-11-28 13:22:19 25 4
gpt4 key购买 nike

更新:再想一想,我可以在 switch 语句之外立即重置这些值。为此,我需要检查大小写是否已更改为下一个大小写值。例如,如果我的值当前处于情况 1(游戏开始 1 秒),我如何检查计时器何时到达下一个值(在本例中为 30)。您认为有什么简单的方法可以做到这一点?

<小时/>

我正在创建一个具有运行计时器的游戏,current.getTime()。事件在游戏中的不同时间戳触发。我在 switch 语句中设置了这些事件的所有变量。

大多数变量都会随情况而变化,但有两个变量在每个语句中重置为其默认值:

1) current.GetTime()
2)setTrapSprung(假);

如何重置这些值,而不必将其放置在每个案例中?最终,我将有 100 多个案例,因此需要重复 200 多行代码。

注意:我无法在 switch 语句之外设置这些值(例如,在设置 case 之后),因为在事件之间的这段时间内,用户实际上可能会引发陷阱,从而将值设置为 true。

  var eventsHallOne         = function () {
switch (current.getTime()) {
// 1st second in the game
case 1:
room.hallOne.setCurUrl(camHallOne.c21);
room.hallOne.setNextUrl(null);
room.hallOne.setTrapUrl(camHallOne.c130422);
room.hallOne.setCatchTime(3);

/* How do I reset these two variables for EACH statement, without having to set them within
* each statement? Each time an event occurs, they will have their value reset to what you see below. */
room.hallOne.setTime(current.getTime());
room.hallOne.setTrapSprung(false);
break;
// 30 seconds into the game
case 30:
room.hallOne.setCurUrl(camHallOne.c6543);
room.hallOne.setNextUrl(null);
room.hallOne.setTrapUrl(camHallOne.c123522);
room.hallOne.setCatchTime(6);
room.hallOne.setTime(current.getTime());
room.hallOne.setTrapSprung(false);
break;
// 45 seconds into the game
case 45:
room.hallOne.setCurUrl(camHallOne.c53);
room.hallOne.setNextUrl(null);
room.hallOne.setTrapUrl(camHallOne.c130);
room.hallOne.setCatchTime(15);
room.hallOne.setTime(current.getTime());
room.hallOne.setTrapSprung(false);
break;
}
/* Could reset the values here if I could detect that the case has changed. Unsure of how to do so, however. */
};

最佳答案

I cannot set these values outside of the switch statement (for example, right after the case has been set), because during that period between events, a user may actually spring a trap, thereby setting the value to true.

错了。您的 eventsHallOne 函数将在处理任何其他事件之前运行完成 - JavaScript 是单线程的。请注意,即使不是,在 case block 中的上一个语句之后执行此操作还是在 switch block 之后的上一个语句之后执行此操作绝对没有区别。

您可以而且应该将其简单地移动到函数末尾。

如果您希望 default 情况不执行任何操作,只需在其中放置 return; 即可,以便 switch block 之后的语句不再执行。

关于javascript - 如何在 JS 中的每个 switch 语句中包含一些内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com