flag說是定義在定時(shí)器外不對(duì),可是放在里邊,覺得也不對(duì),flag變false后,還是不會(huì)再變回true呀
obj.timer=setInterval(function () {
? ? ? ?var flg =true; ?//像這樣嗎? ?感覺也不對(duì),flag變false后,還是不會(huì)再變回true呀?
? ? ? ?for (var attr in json) {
? ? ? ? ? ?//獲取當(dāng)前值
? ? ? ? ? ?var icur = 0;
? ? ? ? ? ?if (attr == 'opacity') {
? ? ? ? ? ? ? ?icur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
? ? ? ? ? ?}
? ? ? ? ? ?else {
? ? ? ? ? ? ? ?icur = parseInt(getStyle(obj, attr));
? ? ? ? ? ?}
? ? ? ? ? ?//算速度
? ? ? ? ? ?var speed = 0;
? ? ? ? ? ?speed = (json[attr] - icur) / 8;
? ? ? ? ? ?speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
? ? ? ? ? ?//檢測(cè)停止
? ? ? ? ? ?if (icur != json[attr]) {
? ? ? ? ? ? ? ?flg=false;
? ? ? ? ? ?}
? ? ? ? ? ?if (attr == 'opacity') {
? ? ? ? ? ? ? ? ? ?//針對(duì)IE瀏覽器
? ? ? ? ? ? ? ? ? ?obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')';
? ? ? ? ? ? ? ? ? ?//針對(duì)其他
? ? ? ? ? ? ? ? ? ?obj.style.opacity = (icur + speed) / 100;
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? ? ?obj.style[attr] = icur + speed + 'px';
? ? ? ? ? ? ? ?}
? ? ? ? ? ? }
? ? ? ?if (flg){
? ? ? ? ? ?clearInterval(obj.timer);
? ? ? ? ? ?if (fn){
? ? ? ? ? ? ? ?fn()
? ? ? ? ? ?}
? ? ? ?}
? ?},30)
}
像這樣嗎? ?感覺也不對(duì),flag變false后,還是不會(huì)再變回true呀?郁悶呀,這邏輯不對(duì)呀
2016-05-15
從true變?yōu)閒alse后可以變成true的,
if(icur != json[attr])
{
? ? ?flag=flase;
}
setInterval函數(shù)不是只執(zhí)行一次的,最終達(dá)到運(yùn)動(dòng)目標(biāo)再執(zhí)行setInterval函數(shù)時(shí),此時(shí)flag=初始值也就是true ,icur==json[attr],所以flag不會(huì)變成false了
2016-05-16
每30ms ? ?flag都會(huì)被賦值一次true