課程
/前端開發
/JavaScript
/JS動畫效果
flag?放在計時器里跟沒定義一個卵樣,會出現bug,有些同志沒有經過完全的調試就以為找出了一個bug;其實不然,運行的時候打開F12看看高寬就知道了,
2017-03-26
源自:JS動畫效果 6-2
正在回答
flag是要放到計時器里的,同時if(flag)要放到for in循環的后面而不是里面,這樣寬高就都對了
我的也有問題,加了if(flag)后鏈式運動執行不了了,因為鏈式運動一次只改變一個屬性,然后達到后定時器就清空了,后面的就不執行了
樓主是沒把if (flag)放在計時器外?
我的運行的很正常 ?也么有什么數據誤差,,,
在flag為false時定時器會一直執行,每次執行時都會重置為true,直到所有的都達到目標值,就不會再為false了,然會就能執行下一個運動
//同步運動函數 function?move(obj,?json,?fn)?{ //清除定時器,避免出現多個定時器 clearInterval(obj.timer); //設定定時器 obj.timer?=?setInterval(function?()?{ //聲明標桿變量 var?flag?=?true; //遍歷同步運動屬性 for?(var?attr?in?json)?{ //獲取屬性值 var?icur?=?0; if?(attr?==?'opacity')?{ icur?=?Math.round(parseFloat(getStyle(obj,attr))?*?100); }?else?{ icur?=?parseInt(getStyle(obj,?attr)); } //設置運動速度 var?speed?=?(json[attr]?-?icur)/100; speed?=?speed>0?Math.ceil(speed):Math.floor(speed); //?判斷是否所有值都達到了目標值,判定暫停定時器的指標 if?(icur?!=?json[attr])?{ flag?=?false; } if?(attr?==?'opacity')?{ obj.style.opacity?=?(icur?+?speed)?/?100; obj.style.filter?=?'alpha(opacity:'?+?(icur?+?speed)?+?')'; }?else?{ obj.style[attr]?=?(icur?+?speed)?+?'px'; } } //清除定時器 if(flag){ clearInterval(obj.timer); if(fn){ fn(); } } },?1); } //獲取任意屬性 function?getStyle(obj,?attr)?{ if?(obj.currentStyle)?{ return?obj.currentStyle[attr];?//IE取樣式 }?else?{ return?getComputedStyle(obj,?false)[attr]; } }
舉報
通過本課程JS動畫的學習,從簡單動畫開始,逐步深入各種動畫框架封裝
2 回答flag說是定義在定時器外不對,可是放在里邊,覺得也不對,flag變false后,還是不會再變回true呀
1 回答實現鏈式運動,把var flag = true;這句要放在定時器setInterval()里面
2 回答?flag放在定時器內,為什么調試出現fn is not啊function?
3 回答請問大家都是怎么學習的js的,
1 回答flag放到定時器外面為什么fn就沒法執行了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-04-24
flag是要放到計時器里的,同時if(flag)要放到for in循環的后面而不是里面,這樣寬高就都對了
2017-04-11
我的也有問題,加了if(flag)后鏈式運動執行不了了,因為鏈式運動一次只改變一個屬性,然后達到后定時器就清空了,后面的就不執行了
2017-04-08
樓主是沒把if (flag)放在計時器外?
2017-04-02
我的運行的很正常 ?也么有什么數據誤差,,,
2017-03-27
在flag為false時定時器會一直執行,每次執行時都會重置為true,直到所有的都達到目標值,就不會再為false了,然會就能執行下一個運動
2017-03-27