javascript - 关于js运动函数的,帮我看看我这样改的有没有问题
黄舟
黄舟 2017-04-10 17:34:55
[JavaScript讨论组]
start.onclick = function(){
    moveElem(elem, {"left" : 300, "top" : 500, "opacity" : 50}, function(){
        moveElem(elem, {"left" : 500, "top" : 300, "opacity" : 100});
    });    

};

function moveElem(obj, json, func){
    cancelAnimationFrame(obj.timer);
    obj.timer = requestAnimationFrame(function(){
        var flag = true;
        for(attr in json){
            var current = 0, speed = 0, result = 0;
            var target = json[attr];

            if(attr === 'opacity'){
                current = parseFloat(getStyle(obj, attr)) * 100;
            }else{
                current = parseInt(getStyle(obj, attr));
            }
            speed = (target - current) / 8;
            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);

            result = current + speed;
            if(attr !== 'opacity'){
                obj.style[attr] = result + 'px';
            }else{
                obj.style.filter = 'alpha(opacity:' + result +')';
                obj.style[attr] = result / 100;
            }
            //    如果没有达到目标,则一直将其置为false
            if(current != target){
                flag = false;
            }
        }

        if(!flag){
            timer = requestAnimationFrame(function(){
                moveElem(obj, json, func);
            });
        }else{
            if(func) func();
        }

    });
}

这是我将网上的那个js运动函数从setInterval改成requestAnimationFrame了,但是对requestAnimationFrame不清楚,不知道这样是不是有问题?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

醉了,看个js根本不知道你要做什么

伊谢尔伦

应该是没有什么问题的吧,只是requestAnimationFrame方法可能兼容性不是太好。
关于requestAnimationFrame方法,你可以看看张鑫旭大神的这篇文章:
requestAnimationFrame有毛线用?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号