亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

按老師這樣寫是不是有bug?

因為 在觸發函數時 用了flag = true, ?但是在setinterval 中 其實必然只能是false 沒有辦法改回ture的狀態。 所以setInterval 其實一直也停不下來,咱們看見東西不動了只是因為當前值與目標值已經一致 所以 speed 怎么也都是0. 但是

正在回答

4 回答

var flag=true;這一句是應該放在setInterval內部吧,老師可能寫錯地方了。按老師這個判斷方法真的好精簡!

0 回復 有任何疑惑可以回復我~
#1

嘛也不會 提問者

非常感謝!
2016-10-23 回復 有任何疑惑可以回復我~
#2

慕粉aidan

必須放在外部,  但是。。。。。但是。。。但是。。。重要的事,,當你30ms函數還沒執行完成,或許還沒有到判斷到if(icur!=json[attr]){flag=false;}這個位置的時候,你的定時器已經進行下輪循環了,這樣的話flag有涉嫌被重寫的嫌疑,所以不能放在setInterval內部。如果循環事件長點的話,或許可以放內部。。有個問題就是 flag要聲明在setInterval之外,要不然每次循環都要申請內存,資源浪費,微觀世界我個覺得挺大一堆開銷。。??聪旅?/div>
2016-10-24 回復 有任何疑惑可以回復我~

雖然我不知道哦為什么要寫在外部,但是我內外都試過了。

如果寫在循環內部,你的物體運動達不到你想要的目標值,并且每次差值還不一樣。。。

寫在外部就沒有這個bug出現。。。

以上。。。我不懂原理,只能告訴你效果。。。

0 回復 有任何疑惑可以回復我~

for循環很快的,如果for循環都需要幾十毫秒,循環體得累贅成啥樣

0 回復 有任何疑惑可以回復我~

必須放在外部,   原因一:放在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之外,要不然每次循環都要申請內存,資源浪費,微觀世界我個覺得挺大一堆開銷


1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

按老師這樣寫是不是有bug?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號