听的云里雾里,出问题了,麻烦帮我看看

来源:6-2 完美运动框架

DOMOHAHA

2016-02-19 21:08

function onmove(obj,json,fn){ 

clearInterval(obj.timer);

var oar=0;

obj.timer=setInterval(function(){

var flag=true; //假设

for(var attr in json){

if(attr=="opacity"){

oar=getStyle(obj,attr)*100;

}else{

oar=parseInt(getStyle(obj,attr));

}         

var speed=oar<json[attr]?10:-10; 


if(oar!=json[attr]){

flag=false; //假设全部都没有实现完成

}


if(attr=="opacity"){

obj.style[attr]=(oar+speed)/100;

obj.style.filter='Alpha(opacity:'+oar+speed+')';

}

else{

obj.style[attr]=oar+speed+'px';

}//要把这里的style.attr改成style[attr]

}

if(flag==true){ //全部都实现了

clearInterval(obj.timer);

if(fn){

fn();

}

}

},30);

}

//方法封装--获取属性

function getStyle(obj,attr){

if(obj.currentStyle){

return obj.currentStyle[attr];//IE浏览器

}else{

return getComputedStyle(obj,false)[attr];//火狐浏览器

}

}


写回答 关注

1回答

  • wanoneQ
    2016-02-20 15:15:20
    已采纳

    第八行 oar=getStyle(obj,attr)*100;中getStyle(obj,attr)需要用parseFloat()函数转换为数字,再四舍五入提高准确度。oar=Math.round( parseFloat( getStyle(obj,attr) )*100);另外你的速度有问题,建议提高精确度采用缓冲动画,防止边缘抖动。

    DOMOHA...

    我测试了一下,第八行 oar=getStyle(obj,attr)*100;中getStyle(obj,attr)不用parseFloat()函数也是数字呢,这样不可以吗?

    2016-02-20 19:14:07

    共 1 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题