popping小泓
2016-01-03 01:17
这个不能链式运动吗,求解决
我觉得:代码应该修改成 介样:
function startMove(obj, json, fn) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
for(var attr in json) {
var flag = true;
//1.取当前的值
var icur = 0;
if(attr == 'opacity') {
icur = Math.round(parseFloat(getStyle(obj, attr))*100);
} else {
icur = parseInt(getStyle(obj, attr));
}
//2.计算速度
var speed = (json[attr] - icur) / 10;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
//3.检测停止
if(icur != json[attr]) {
flag = false;
}
if(attr == 'opacity') {
obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')';
obj.style.opacity = (icur + speed) / 100;
} else {
obj.style[attr] = icur + speed + 'px';
}
}
if(flag) {
clearInterval(obj.timer);
if(fn) {
fn();
}
}
}, 30);
}
如果把各个属性拆分开来,就能看出每个属性,不管大小,如果同时遍历的,只需要回调。
第一: 你的flag标杆不能和老师一样放在For in上面个,应该包裹起来。
第二: 你的This指针问题。
未加回调函数
如果这个完美运动要达到链式运动效果;要在老师的代码中的 if (icur !== json[attr]) {
flag=false;
}
后面加上 else{flag=ture};
这样才算真真完成了整个框架;;可能老师忘了这个问题吧
JS动画效果
113925 学习 · 1443 问题
相似问题