-4

我遇到了这个问题,我想做一个小型的空闲游戏,但我找不到永远循环的东西并且仍然运行其他代码。这是我到目前为止所拥有的

var blops = 0;
var clickpower = 1;
var bps = 0;
var blopx = 240;
var blopy =220;

//Clicking the blob
onEvent("blob", "click", function() {
blops += clickpower;
blopx += 10;
blopy += 10;
setSize("blob", blopx, blopy);
sleep(90);
blopx += -10;
blopy += -10;
setSize("blob", blopx, blopy);
setText("blopsCount",blops);
});
//Debug BPS Toss Later
onEvent("bpsDebug", "click", function() {
bps += 1;
});
//Add BPS Tto Blops
while(true){
addBlops();
}

///FUNCTIONS
function addBlops(){
  sleep(1000);
  blops += bps;
}
//A Waiting Function
function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

4

1 回答 1

1

您的代码被锁定,因为您从未释放控制权。JavaScript 是一种单线程语言。如果你想允许其他事情发生,你需要通过允许你的函数返回来释放控制。如果你想重复做某事,你可以setInterval每隔一定的毫秒数运行一次代码,或者requestAnimationFrame将你的函数调用添加到事件循环中,并允许 UI 等其他事情继续工作,即使你的函数被重复调用以更新无论你需要它做什么。如果您想权衡您的选择,有一些很好的文档可供您使用。

于 2019-11-27T18:26:13.523 回答