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

JS动画效果

vivian Web前端工程师
难度初级
时长 2小时 8分
学习人数
综合评分9.60
537人评价 查看评价
9.8 内容实用
9.6 简洁易懂
9.4 逻辑清晰
1.flag要放在setInterval回调函数外面声明并初始化为false
2.在setInterval回调函数开头判断flag,false表示动画没有执行完,true表示动画执行完毕需要关闭定时器
3.如果动画没有执行完,则在for..in..循环外将flag置为true,并在循环中分别判断每个动画是否完毕,完毕则不做任何动作,未完毕则执行动画并将flag置为false
还有就是speed的赋值部分可以拿到定时器外面,计算一次就好了,放在定时器里面那次数该多多少呀
老师那个边界检验还是存在跟之前一样的问题。
1判断界限的时候如果是==的话,假如运动速度不是整数或者换成不能被界限值整除的数,会一直运动下去,造成边界判断失效,所以判断界限时要用>=或者<=,所以mouseover和mouseout的时候两个函数不能如此简单的整合,加上边界判断,可能还没有分开写简单;2.考虑到事件冒泡,建议用mouseenter和mouseleave.
我到希望老师能给出代码,不然很多压根不理解,有代码想学好的就不会去抄
clearInterval(timer)其他的都明白,唯独这个不明白 刚刚进入startmove()函数,这个的作用和效果不太明白
都是障眼法
要自己弹一弹
上头说的补上一个else来改flag的值为true是有问题的,只要最后一个到达了就会清除了 同样是有bug!
为毛我都回调函数不执行。。。
一招在手,天下我有的feel
几经折腾后发现里面的局部变量和全局变量有点搞头!
haha</textarea><textarea>haha
1. flag要放在for-in里面
2. if(flag){...} 要放在for-in外面,setInterval里面。

求赞,谢谢
function startMove(obj,goal){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var speed=(goal-obj.offsetWidth)/8
speed=speed>0?Math.ceil(speed):Math.floor(speed);
if (goal==obj.offsetWidth) {
clearInterval(obj.timer);}
else{obj.style.width=obj.offsetWidth+speed+'px';}
},30)}
课程须知
1.您至少已经具备JavaSript的知识。2.您已经具备一些开发经验。
老师告诉你能学到什么?
1.使用定时器实现简单动画。2.如何一步步封装库。2.培养编程的思想。

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消