syy138
2016-07-25 15:01
为什么“宽度200到400,高度100到200,;透明度30到100”的同时运动没问题;而宽度到201 就有问题呢?还没听明白啊?求解答
我来说说我的理解,不知道是不是完全正确,有不对的地方欢迎大神指出!
导致问题出现的原因:在时间上宽度首先到达了目标值201,而其他两个属性这时还没有,这时代码运行了清除定时器,所以还没到达目标值的两个属性也停止了运动。
if(icur==json[attr]){.......},这个if句式里的条件的意思就是:只要有任意一个属性的值(即:icur)等于目标值(即:json[attr]),那么就会执行{........}里面的清除定时器代码,理解这一点,与如何理解 解决问题时为什么要引入变量var flag有非常大的关系。
解决问题:
引入变量var flag=true;
if(icur != json[attr]){ flag = false }; //只要有任意一个属性的值不等于目标值,那么定义flag=false;然后继续执行运动代码。
if(flag){..........}; //如果flag=true,即每一个属性的值都等于目标值,那么运行{..........}里面的清除定时器。
引入变量flag就是为了表达出 每一个属性的值都等于目标值 这个意思。
因为宽度目标值400,还未达到之前,紧接着运行了第二个目标和第三个目标值;是201时,运行时间短促,直接就被清除了定时器即动作停止,还未来得及同时运行下个动作。不知道这样理解是否正确?
JS动画效果
113925 学习 · 1443 问题
相似问题