MIS_Lu
2015-08-21 22:58
不知道大家有没有遇到,如果像老师写的flag就是一开始给个初始值为true,在循环里却没有去设置flag = true,导致定时器没有关闭,因为flag在循环后就一直为false,在这种情况下,同时运动居然能够完美的运行成功,单身链式动画却失效了。但是如果在for(var attr in json)里添加
if( icur != json[attr]){
flag = false;
}else{
flag = true;
}此时定时器可以关闭了,链式动画也可以执行,但是同时运动却无法达到效果了,请问有人知道解决办法吗???!!
嗯 上面代码确实对着 主要是老师将flag的定义写错位置了
每隔30毫秒,在计时器里面都会先将flag值设置为真,然后再去遍历时候还有未到达itarget的属性,如果都完成。flag就还是真,终止计时器。。。结束战斗。
function startMove (obj,json,fn) {
clearInterval(obj.timer);
obj.timer = setInterval(function () {
var flag = true;
for(var attr in json){
// 1.取当前的值
var icur = 0;
if(attr == 'opacity'){
icur = Math.round(parseFloat(getStyle(obj,attr))*100);//Math.round四舍五入取整目的是为了解决计算机存储小数不精确问题
}else{
icur = parseInt(getStyle(obj,attr));
}
// 2.算速度
var speed = (json[attr] -icur)/8;
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 == true) {
clearInterval(obj.timer);
if (fn) {
fn();
};
};
},30);
}
我也疑惑,这个flag经过遍历后就一直为false了啊!!!
JS动画效果
113925 学习 · 1443 问题
相似问题