flag = false 是什么時候被重置為true的?
照著視頻的代碼實踐了一次,發(fā)現(xiàn)沒有把flag重置為true的代碼,但是最后確確實實是清除了定時器,那么,flag是什么時候被重置的呢?
另外,看到有人回答,flag應該被聲明在定時器里面,這個是不對的。如果聲明在定時器里面,那么就會出現(xiàn)視頻中聲明flag之前的bug。
求大神解答一下。
上面的問題好像有點不清晰哈,下面說清楚一點。
flag=true是放在定時器外面的,對吧?定時器里面是沒有代碼把flag重置為true的,當?shù)谝淮未a執(zhí)行到
if(icur!=json[attr]){ ????flag=false; }
這里的時候,flag就被賦值為false了,之后都沒有給flag賦值為true。
那么最后是怎么判斷到flag=true的呢?
在這里就很不明白,因為沒有把flag重置為true的話,其實是沒辦法執(zhí)行
if(flag){ ????clearInterval(obj.timer); ????if(fn){ ????????fn(); ?????} ?}
和之后的fn函數(shù)的。
2017-08-14
看完了樓主寫的,完全沒有毛病,教程代碼確實有BUG,不過既然因為?speed?=?(json[attr]?-?icur)/8 語句, 當 speed 為0時就能自己停止,為什么教程還要加一大堆檢測停止的代碼,我發(fā)現(xiàn)把那一大段去掉之后功能正常啊,不知道我有沒有想錯?
2017-05-16
把flag放外面,最后速度為0,動畫是停止了,但是代碼一直在運行,無限循環(huán)的運行,if(flag)永遠到不了
2017-04-13
沒仔細看,原來你的代碼已經(jīng)解決了。。
2017-04-13
一、var flag = true; 是放在定時器外面的。
二、每次啟動定時器強制?flag = true。
三、在for循環(huán)外面,再次判斷flag。
2017-04-13
還需要把
if(flag){
????????????clearInterval(obj.timer);
????????????if(fn){
????????????????fn();
????????????}
這一段放在for 循環(huán)外面。。.
-------------手動分割------------------
樓主,你看看有木有bug,或者你有其他解決方案了沒有?
2017-04-13
我去,不行。。
2017-03-27
2017-03-27
經(jīng)過多番測試,視頻中的完美運動代碼存在bug,這個框架只可以實現(xiàn)同步動畫,不可以實現(xiàn)鏈式動畫。
同步動畫最后會停止,不是因為
而是代碼中的
這一部分等于0了,也就是說,動畫不再變化了,看起來就好像清除了定時器一樣。
如果在清除定時器的判定語句中加入一個測試語句,可以發(fā)現(xiàn),第一次鼠標移入目標的時候,第一次執(zhí)行到這個動畫,是不會執(zhí)行到測試的語句的,說明定時器的判定語句并未執(zhí)行。
如果沒有onmouseout的動畫,那么,第二次鼠標移進去的時候,在執(zhí)行動畫之前,都滿足
也就是說speed在第二次執(zhí)行動畫的時候,一直是0,那么這個時候,下面這個判定就沒有執(zhí)行了
于是flag就是第二次執(zhí)行動畫的初始值,也就是:
自然而然的,后面的這部分代碼就能夠執(zhí)行了。
上面講得比較啰嗦,不知道大家有沒有看懂,沒看懂的可以照著一步一步去嘗試一下,會得到我說的這個結(jié)果的
2017-03-26
首先我終于找到跟我一樣認為flag是放在定時器外的人了,這一節(jié)課里面用的json[attr]不是target,json[attr]就相當于json.attr; 源碼:
我資質(zhì)較淺,我以個人名義說說我的想法,
var flag=true;這是放在計時器外的對吧,當遇到if(itur != json[attr] )語句的時候,就把flag這個全局變量設為false, 如果if(itur != json[attr] )不成立的時候,if( flag ){}這個語句就會找到全局變量,所以這就是為什么要放在計時器外
2017-03-26
評論在一樓的那位大哥已經(jīng)誤導了大家,flag放在計時器內(nèi)會出現(xiàn)bug.
你的問題我有點看不明白啊哥們,說的明白些