0

我正在学习编码。

我制作了以下脚本,如果执行将根据当前状态打开或关闭 raveMode。我的目标是让它在 raveMode 开启时重复一个 while 循环,直到它再次关闭,但是,它似乎只能部分工作。这是代码:

Delay = (ms) => new Promise(res => setTimeout(res, ms));
    

raveMode = !raveMode
    print(raveMode)
    while (raveMode) {
      SetVehicleLights(playerInfo.vehicle, 2);
      await Delay(300);
      SetVehicleLights(playerInfo.vehicle, 0);
    }

基本上,SetVehicleLights(..., 2)打开车辆灯并SetVehicleLighs(..., 0)关闭它们。但是,代码仅在 raveMode 开启时打开灯,并在 raveMode 关闭时关闭它们,而不是重复地打开和关闭它们。

我在下面的代码中使用了相同的脚本,并且灯被打开和关闭一次,如本例所示:

if (!GetIsVehicleEngineRunning(playerInfo.vehicle)) {
      SetVehicleLights(playerInfo.vehicle, 2);
      await Delay(300);
      SetVehicleLights(playerInfo.vehicle, 0);
}
4

2 回答 2

1

循环重复得很好。但是在循环的一次迭代结束时“关灯”和循环的下一次迭代开始时“打开灯”之间的延迟为零。因此,您永远不会感觉到灯已关闭。

由于您希望有两个明显的延迟,请添加第二个延迟:

while (raveMode) {
  SetVehicleLights(playerInfo.vehicle, 2);
  await Delay(300);
  SetVehicleLights(playerInfo.vehicle, 0);
  await Delay(300);
}
于 2021-06-23T13:21:55.960 回答
0
while (raveMode) {
  SetVehicleLights(playerInfo.vehicle, 2);
  await Delay(300);
  SetVehicleLights(playerInfo.vehicle, 0);
  await Delay(300);
}
于 2021-06-23T13:24:12.063 回答