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