編輯:拉斐爾Rafatpanah指出,requestAnimationFrame()
不會在瀏覽器中運行。在推薦時我不瞭解上下文。 setTimeout()
是非瀏覽器專用的,可能是您最好的選擇。
編輯2:修復錯誤範圍界定
var fadeAmount = 0.01;
var waitTime = 250; // milliseconds == 0.25 seconds
var textOverlay = this.textOverlay;
function textFade() {
setTimeout(function() {
if (textOverlay.alpha >= 0) {
textOverlay.alpha -= fadeAmount;
textFade();
}
}, waitTime);
}
textFade();
這將通過fadeAmount每WAITTIME毫秒遞減alpha值。玩弄fadeAmount和waitTime變量來找到你喜歡的速率。
如果您在瀏覽器中使用爲,則可以使用requestAnimationFrame()和循環計數器,它將動畫與瀏覽器的渲染週期相關聯。
var fadeAmount = 0.01;
var n = 24;
var textOverlay = this.textOverlay;
function textFade() {
requestAnimationFrame(function (cycle) {
if (textOverlay.alpha >= 0) {
textOverlay.alpha -= fadeAmount;
}
if (cycle % n !== 0) {
cycle++;
textFade(cycle);
}
});
}
// Call with initial cycle value:
textFade(0);
這會通過fadeAmount每n幀遞減α值。玩弄fadeAmount和n個變量來找到你喜歡的速度。更多信息上requestAnimationFrame()
查看文檔:https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
不要在緊密循環一樣,改變DOM - 你不會看到它的發生是因爲「渲染」不會發生直到你的JS代碼完成 –
如果你想要很好的平滑「過渡」...嘗試使用[CSS轉換](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions) –