按老師這樣寫是不是有bug?
因?yàn)?在觸發(fā)函數(shù)時(shí) 用了flag = true, ?但是在setinterval 中 其實(shí)必然只能是false 沒有辦法改回ture的狀態(tài)。 所以setInterval 其實(shí)一直也停不下來,咱們看見東西不動(dòng)了只是因?yàn)楫?dāng)前值與目標(biāo)值已經(jīng)一致 所以 speed 怎么也都是0. 但是
因?yàn)?在觸發(fā)函數(shù)時(shí) 用了flag = true, ?但是在setinterval 中 其實(shí)必然只能是false 沒有辦法改回ture的狀態(tài)。 所以setInterval 其實(shí)一直也停不下來,咱們看見東西不動(dòng)了只是因?yàn)楫?dāng)前值與目標(biāo)值已經(jīng)一致 所以 speed 怎么也都是0. 但是
2016-10-21
舉報(bào)
2016-10-23
var flag=true;這一句是應(yīng)該放在setInterval內(nèi)部吧,老師可能寫錯(cuò)地方了。按老師這個(gè)判斷方法真的好精簡!
2016-10-25
雖然我不知道哦為什么要寫在外部,但是我內(nèi)外都試過了。
如果寫在循環(huán)內(nèi)部,你的物體運(yùn)動(dòng)達(dá)不到你想要的目標(biāo)值,并且每次差值還不一樣。。。
寫在外部就沒有這個(gè)bug出現(xiàn)。。。
以上。。。我不懂原理,只能告訴你效果。。。
2016-10-24
for循環(huán)很快的,如果for循環(huán)都需要幾十毫秒,循環(huán)體得累贅成啥樣
2016-10-24
必須放在外部, 原因一:放在setInterval內(nèi)部并且在for之前,每次當(dāng)if(icur!=json[attr]){flag=false;},就是說當(dāng)?shù)竭_(dá)某個(gè)屬性目標(biāo)值時(shí),然后下次就繞過它了,判斷其它的屬性值是否到達(dá)目標(biāo)值,如果沒到達(dá),繼續(xù)flag=false;然后又開始循環(huán)被var flag=true;直到所有屬性都到達(dá)目標(biāo)值時(shí)flag才為true;
這是正常的邏輯思維,但是。。。。。但是。。。但是。。。重要的事,,當(dāng)你30ms函數(shù)還沒執(zhí)行完成,或許還沒有到判斷到if(icur!=json[attr]){flag=false;}這個(gè)位置的時(shí)候,你的定時(shí)器已經(jīng)進(jìn)行下輪循環(huán)了,這樣的話flag有涉嫌被重寫的嫌疑,所以不能放在setInterval內(nèi)部。如果循環(huán)事件長點(diǎn)的話,或許可以放內(nèi)部。。。?!?/p>
有個(gè)問題就是 flag要聲明在setInterval之外,要不然每次循環(huán)都要申請內(nèi)存,資源浪費(fèi),微觀世界我個(gè)覺得挺大一堆開銷