所以我已經制作了一個按字母打印出文字的函數,如下所示(我知道我的命名方案不好,請不要開玩笑。我還是相當新的編碼,所以我的代碼看起來有點奇怪/低效的。)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
}
,我調用這個函數多次在我的代碼,設置對話框,不管它是什麼,我想打印,和然後調用該函數。一開始它運行良好,但每次運行它時,看起來字母的打印速度越來越快。我不確定發生了什麼,或者如何解決它。我在谷歌上做過幾次搜索,但沒有任何用處。
你爲什麼初始化'talk'當你剛剛要去從'charAt'分配結果呢? –
每次調用'talky()'時,都會調用'setInterval()'並註冊一個函數,每100毫秒調用一次。你永遠不會使用'setInterval'來存儲句柄......並且從不在其上使用'clearInterval()'...因此,最終會有多個間隔函數運行,這會給間距週期減少_appearance_。 – canon