首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 動畫函數中 bStop 旗標與字串拼接加號的詳細解析

     編輯:程式設計綜合問答

程式碼片段

obj.style.filter = 'alpha(opacity:' + (iCur + iSpeed) + ')';
obj.style.opacity = (iCur + iSpeed) / 100;

問題 1:bStop 的作用

var bStop = true; 在每幀動畫開始時重置。遍歷所有需動畫的屬性 (for...in json):
若任一屬性 iCur != json[attr] (尚未到達目標值),則 bStop = false。
迴圈結束後,若 bStop 仍為 true,表示所有屬性皆到達目標,清除定時器並執行回呼 fn;否則繼續下一幀。
這是多屬性同步動畫結束判斷的標準模式。

問題 2:'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 弱型別自動轉換特性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved