Итак, я создал функцию, которая печатает текстовое письмо по букве, как показано ниже. (Я знаю, что моя схема именования не является отличной платой, не развлекайтесь, также имейте в виду я все еще достаточно новый для кодирования моего код может показаться немного странным/неэффективным.)Javascript setInterval становится короче каждый раз, когда он запускается
var text = document.getElementById("gametext")
var dialog = "the entire text you want to print out"
var talk = "The whole text gets added here, letter by letter"
var charinc = 0
function talky() {
setInterval(function(){
if(charinc < dialog.length){
talk = dialog.charAt(charinc++);
text.innerHTML += talk;
}
}, 100);
charinc = 0
}
и я называю эту функцию несколько раз в моем коде, устанавливая диалог бы то ни было, я хочу, чтобы напечатать, и затем вызов функции. И сначала все работает нормально, но каждый раз, когда я запускаю его, кажется, что письма печатаются быстрее и быстрее. я не совсем уверен, что происходит, или как это исправить. Я сделал несколько поисков в google, но ничего полезного не пришло.
Почему вы инициализации 'talk', когда вы только собираетесь присвоить результат от' charAt' к нему? –
Каждый раз, когда вы вызываете 'talky()', вы вызываете 'setInterval()' и регистрируете функцию, которая будет вызываться каждые 100 миллисекунд. Вы никогда не храните дескриптор из 'setInterval' ... и никогда не используете' clearInterval() 'на нем ... так что вы заканчиваете работу нескольких интервальных функций, которая дает _appearance_ периода сокращенного интервала. – canon