所以我做了一个逐个字母打印文本的函数,如下所示。(我知道我的命名方案不是很好请不要取笑。另外请记住,我对编码仍然很陌生所以我的代码可能看起来有点奇怪/效率低下。)
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
}
我在整个代码中多次调用此函数,将对话框设置为我想要打印的任何内容,然后调用该函数。一开始一切正常,但每次我运行它时,字母打印出来的速度似乎越来越快。我不太确定发生了什么,或者如何解决它。我在谷歌上做了一些搜索,但没有找到有用的东西。
最佳答案
第一次运行时,每 100 毫秒运行一次。
第二次运行它时,有两个间隔,每个间隔每 100 毫秒运行一次。
等等。
由于它们共享相同的变量,您只需让它们每 100 毫秒将输出速度提高一次。
或者:
- 完成后调用
clearInterval(...)
- 将全局变量作为参数传递给
talky
,这样它们就不会在多个间隔之间共享 - 只需更新变量而不是再次调用
talky
关于Javascript setInterval 每次运行时都会变短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37104177/