缓冲运动怎样达到目标值?

写了一个物体缓冲运动的demo,但是不能到达目标值,求解!

function move(idname, speed, target) {

            clearInterval(timer);

            var box = document.getElementById(idname);

            timer = setInterval(function(){

                var v = (target-box.offsetLeft)/speed;

                v = v > 0 ? Math.ceil(v):Math.floor(v);

                if (parseInt(box.style.left) == target) {

                    

                    clearInterval(timer);

                } else {

                    box.style.left = box.offsetLeft + v + 'px'; 

                }

            }, 30)

        }

box.onmouseover = function() {

                move('box', 20, 500);

            }

https://img4.mukewang.com/5c2db90f0001fa0003050079.jpg

为什么是left值是633px?

精慕HU
浏览 419回答 1
1回答

尚方宝剑之说

你的判断条件有问题,并不是运动的结果每次都会恰好等于目标值,这之间会存在误差,可能会少,可能会多,当处于某个值之后会发生v在正负之间来回摆动的问题,所以判断的条件应该是v的绝对值与目标和实际误差绝对值的比较。另外建议变量名与实际相符。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript