最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

為什么向右移動(dòng)時(shí)是向上取整,然后向左移動(dòng)是向下取整?

為什么向右移動(dòng)時(shí)是向上取整,然后向左移動(dòng)是向下取整?

正在回答

3 回答

比如移動(dòng)到的目標(biāo)值是300px,通過300減去當(dāng)前的坐標(biāo)0,再除以20,結(jié)果是15,div以15的速度向右移動(dòng),這是第一次定時(shí)器執(zhí)行的結(jié)果。30毫秒后再執(zhí)行一次,目標(biāo)移動(dòng)到了15,通過300減去當(dāng)前坐標(biāo)15結(jié)果是285,285除以20結(jié)果的14.25,這樣一次次運(yùn)算下來,速度越來越小,比如速度是15、14.25、12.73、7.2。。。。這樣的。

由于數(shù)值設(shè)置的原因,div移動(dòng)到一定px后,進(jìn)行相減再除20的運(yùn)算后會(huì)出現(xiàn)小數(shù),比如0.75,比如這時(shí)div移動(dòng)到了290,程序里寫到div的left=oDiv.offsetLeft+speed+'px',那么div的left就是290.75px,而瀏覽器是不允許出現(xiàn)小數(shù)的,會(huì)把0.75去掉,那么div的left就成了290,下次執(zhí)行時(shí)div的left是290,算出來速度還是0.75,瀏覽器又省略了小數(shù),結(jié)果就是div停在了290px,到不了目標(biāo)點(diǎn)300。

為了解決這個(gè)問題,Math.ceil就派上用場(chǎng)了,它會(huì)把0.75向上取整為1,這樣div就又可以向右移動(dòng)1px了,這時(shí)里目標(biāo)點(diǎn)很近了,就以1的速度慢慢到達(dá)300,然后停止定時(shí)器。
同理,向左移動(dòng),計(jì)算出來的速度會(huì)是負(fù)值比如-0.75,就用Math.floor把速度向下取整為-1,這樣,就避免了卡在某個(gè)像素點(diǎn)不動(dòng)的問題。
Math.floor還是ceil這些運(yùn)算的目的不是要把speed取到0,而是要讓瀏覽器可以繼續(xù)運(yùn)算下去,然后用我們的if條件判斷,等于itarget了就結(jié)束運(yùn)動(dòng)。

3 回復(fù) 有任何疑惑可以回復(fù)我~
#1

DOMOHAHA 提問者

非常感謝!講的非常清楚
2016-02-22 回復(fù) 有任何疑惑可以回復(fù)我~
#2

qq_風(fēng)_54

請(qǐng)問,瀏覽器會(huì)忽略小數(shù)的話為什么例子里面會(huì)出現(xiàn)190.5px呢
2016-03-13 回復(fù) 有任何疑惑可以回復(fù)我~
#3

qq_風(fēng)_54 回復(fù) 慕容6759333

非常感謝,這個(gè)問題找了好久沒找到答案,再次謝謝
2016-03-13 回復(fù) 有任何疑惑可以回復(fù)我~
查看1條回復(fù)

不是還是負(fù)的嗎?offsetLeft

0 回復(fù) 有任何疑惑可以回復(fù)我~

因?yàn)橄蛴乙苿?dòng)offsetLeft為正值,如果向下取整就會(huì)大于目標(biāo)值,不符合條件,向左同理

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

DOMOHAHA 提問者

不是還是負(fù)的嗎?offsetLeft
2016-02-17 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

為什么向右移動(dòng)時(shí)是向上取整,然后向左移動(dòng)是向下取整?

我要回答 關(guān)注問題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)