obj.style.filter = 'alpha(opacity:' + (iCur + iSpeed) + ')';
obj.style.opacity = (iCur + iSpeed) / 100;
bStop 的作用var bStop = true; 在每幀動畫開始時重置。遍歷所有需動畫的屬性 (for...in json):
若任一屬性 iCur != json[attr] (尚未到達目標值),則 bStop = false。
迴圈結束後,若 bStop 仍為 true,表示所有屬性皆到達目標,清除定時器並執行回呼 fn;否則繼續下一幀。
這是多屬性同步動畫結束判斷的標準模式。
'alpha(opacity:' + (iCur + iSpeed) + ')' 中的加號'alpha(opacity:' 是字串,(iCur + iSpeed) 是數值運算結果 (數字),JS 自動將數字轉為字串並拼接。iCur、iSpeed 均為數字,執行算術加法。')' 字串拼接。結果:生成如 'alpha(opacity:45)' 的字串,賦給 IE 專用 filter 樣式。
opacity 歸一化obj.style.opacity = (iCur + iSpeed) / 100; 將 0-100 整數轉為 0.0-1.0 浮點數,符合標準 CSS opacity 規範。
bStop 是「所有屬性動畫完成」的聚合旗標;字串拼接中 + 與字串相加即為拼接,括號內純數字相加為算術,利用 JS 弱型別自動轉換特性。