为了账号安全,请及时绑定邮箱和手机立即绑定

关于flag问题

不知道大家有没有遇到,如果像老师写的flag就是一开始给个初始值为true,在循环里却没有去设置flag = true,导致定时器没有关闭,因为flag在循环后就一直为false,在这种情况下,同时运动居然能够完美的运行成功,单身链式动画却失效了。但是如果在for(var attr in json)里添加 

if( icur != json[attr]){ 

        flag = false;

}else{

    flag = true;

}此时定时器可以关闭了,链式动画也可以执行,但是同时运动却无法达到效果了,请问有人知道解决办法吗???!!

正在回答

4 回答

嗯 上面代码确实对着 主要是老师将flag的定义写错位置了

1 回复 有任何疑惑可以回复我~
#1

MIS_Lu 提问者

非常感谢!
2015-11-10 回复 有任何疑惑可以回复我~

每隔30毫秒,在计时器里面都会先将flag值设置为真,然后再去遍历时候还有未到达itarget的属性,如果都完成。flag就还是真,终止计时器。。。结束战斗。

0 回复 有任何疑惑可以回复我~
#1

hey自然

哪个操作将flag置true了呢?当window.onload加载后,按照老师的逻辑写法,第一次是声明置真,但是之后一直我们一直是在执行startMove里的计时器这个操作呀~计时器不可能去将flag置真。所以 var flag = true;声明这个变量应该像楼上这样放在计时器里。这样从逻辑上,从结果上都是可行的!
2015-09-10 回复 有任何疑惑可以回复我~

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);


}



0 回复 有任何疑惑可以回复我~
#1

东风破

大神,为啥把flag放在定时器中就可行了,能讲一下吗?非常感谢
2015-09-10 回复 有任何疑惑可以回复我~
#2

MIS_Lu 提问者 回复 东风破

因为定时器是会隔段时间定时执行那段代码的,将flag的初始化设置在定时器执行函数里,这样每隔一段时间执行这段代码它都会被初始化为true。在这种情景下当所有的json属性执行完了之后,下面没有操作将它改成false了,这样flag就是为true,最终使定时器清除。
2015-09-21 回复 有任何疑惑可以回复我~
#3

慕后端7360633 回复 MIS_Lu 提问者

感谢,说的不错!
2016-03-17 回复 有任何疑惑可以回复我~

我也疑惑,这个flag经过遍历后就一直为false了啊!!!

0 回复 有任何疑惑可以回复我~
#1

MIS_Lu 提问者

代码应该是下楼这样的,你看看
2015-09-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JS动画效果
  • 参与学习       113925    人
  • 解答问题       1443    个

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

进入课程

关于flag问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信