#javascript #app-lab
#javascript #приложение-лаборатория
Вопрос:
Я работаю над приложением, используя 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. Вы не передаете функцию, которая должна быть вызвана
setInterval
.2. Первым аргументом должна быть функция:
setInterval(cityTimer, 1000)
3. Ознакомьтесь с документацией для
setInterval
Ответ №1:
Первым параметром для setInterval
является функция. И второй параметр — это количество времени.
var city_time_counter = setInterval(cityTimer,1000);
Если вы хотите, чтобы таймер запускался по щелчку, затем прикрепите прослушиватель к элементу и установите в нем значение Interval.
document.getElementById("start_city_game_button").addEventListener('click',()=>{
city_time_counter = setInterval(1000);
})
А также, если вам нужно уменьшить переменную на 1
, вы можете использовать сокращение для этого.
city_time = city_time -1;
Приведенная выше строка такая же, как
city_time--;
Комментарии:
1. Мне нужно определить cityTimer. Как мне это сделать? Спасибо
2. @pdxryanpdx Ваш вопрос понятен, что такое cityTimer
3. cityTimer — это 60-секундный таймер
4. @pdxryanpdx Тогда ваш код должен работать. Если она не работает, создайте фрагмент, чтобы показать реальную проблему.
5. gyazo.com/895bc60c53d90c0cf74ca6e4649acc59 это мой код. Если вы хотите, я могу добавить весь свой код, но это очень грязно