Как объявить эту переменную - PullRequest
0 голосов
/ 23 апреля 2019

Я работаю над приложением, использующим App Lab (code.org).Извините, если это очень легко исправить.Я запустил javascript всего 3 месяца назад, и это мой первый проект.

Я хочу начать обратный отсчет, как только они нажмут кнопку «start_city_game_button», однако я получаю эту ошибку

setInterval() callback parameter value (1000) is not a function

и

setInterval() milisecond parameter value (undefined) is not a number.

Эти ошибки появляются в строке 2.

var city_time = 60;
var city_time_counter = setInterval(1000);

function cityTimer() {
city_time = city_time -1;
  clearInterval(city_time_counter);
  }
}

Я ожидаю, что таймер запустится, как только уровень будет запущен, однако время фактически запускается при запуске приложения.Я прошел через многие проекты этого кода, чтобы найти правильный ответ, но я не могу найти способ.

onEvent("back_mainscreen", "click", function() {
  setScreen("start_screen");
});
onEvent("instructions", "click", function() {
  setScreen("instructions");
});
onEvent("startgame", "click", function() {
  setScreen("city_screen");
});

// City Code
var city_tries = 0;
var city_time = 60;
var city_time_counter = setInterval(1000);



onEvent("start_game_city_button", "click",function() {
city_time = city_time -1;
console.log(city_time);
setText("second_city_time", city_time);
  if (city_time === 0) {
  setScreen("city_screen");
  clearInterval(city_time_counter);
  }
});
  
  onEvent("start_game_city_button", "click", function() {
  console.log("CONSOLE: Player Started City Level");
  console.log(city_tries);
  setScreen("city_game_screen");
  city_tries = city_tries + 1;
});




var score = 0;
onEvent("deer", "click", function() {
  setPosition("deer", randomNumber(50,240), randomNumber(50, 400));
  score = score + 1;
 setText("score_label", score);
});
// Ocean Code
var ocean_tries = 0;
onEvent("ocean_start_button", "click", function() {
    ocean_tries = ocean_tries + 1;
  console.log("CONSOLE: Player Started Ocean Level. Try");
    console.log(ocean_tries);
});

1 Ответ

2 голосов
/ 23 апреля 2019

Первый параметр для setInterval является функцией.И второй параметр - количество времени.

var city_time_counter = setInterval(cityTimer,1000);

Если вы хотите, чтобы таймер запускался при щелчке, тогда присоедините слушатель к элементу и установите в нем setInterval.

document.getElementById("start_city_game_button").addEventListener('click',()=>{
    city_time_counter = setInterval(1000);
})

А также, если вам нужно уменьшить переменную на 1 для этого можно использовать сокращение.

city_time = city_time -1;

Приведенная выше строка такая же, как

city_time--;
...