你一边获取了实时时间一边却把固定的时间赋值给实时时间,然后又让实时时间和固定时间比较,if语句当然不会触发啦,他俩给你整成一样一样的怎么触发
render() 函数 就执行了一次, 如果想刷新的化 写个定时器 , 每1秒render 一次 就行
window.requestAnimationFrame('gameloop'); 这样写 不会调用自身
这个在后续讲解小球弹跳的时候有用到
时间要修改一下,改成你目前的时间之后的时间
时间要设置成未来的时间,距离当前时间不超过4天的,老师给的时间的过去的
你设置1000毫秒,其实就是一秒才调用一次函数,加上程序运行的速度,其实不止一秒的,比如计时器,人家也是500毫秒调用一次当前时间,你1000毫秒,如果稍微顿卡下,就直接跳两秒了
调用的时候,系统时间不一样啊
function getsecond(){
var curTime = new Date();
var ret = curTime.getTime()-endTime.getTime();
ret = Math.round(ret/1000);
return ret>=0?ret:0;
}
var ret = endTime().getTime() - curTime.getTime();
你写反了
setInterval的{}改为(),还有你的update()函数没执行
你设置成1000s加上运行延迟每次刷新将耗费一秒多,并且你可以感觉到页面的刷新。设置成50ms等于说一秒你的页面刷新将近20次,动画效果会更流畅。
时间超过了4天。const endTime = new Date(2017,7,11,18,47,52);表示的8月。
setInerval第一次运行(先render函数 然后update函数 这时里面next 和cur的时间都是一样 假设都是3秒 也就倒数时间还剩3秒) 50毫秒刷新一次 还是不会变 1000毫秒(1秒)后 再运行render 然后 update 这时update里面next获取了一个新的时间 就是2秒 和原来的cur不等 于是就将新的剩余时间赋值给cur 下次再执行render函数的时候 画布的时间就会变了 就这样一次次循环倒数下去了
我怎么做不出来动态的,显示 for ( var i = 0; i < digit[num].length ; i++) 这一行会有错误的,总感觉如果要做出来,digit.js这个里面的数组就不应该是固定不变的值,如果时间改变了,里面相应位置的0,1应该会有所变化的额
不贴代码怎么看
搞定了!知道错在哪了
老哥 哪个参数
curShowTimeSeconds = getCurShowTimeSeconds()表示curShowTimeSeconds一直都在获取动态值,但我们要生成与与当前一样的彩色小球,实际上是获取一个curShowTimeSeconds静态值,而且随着getCurShowTimeSeconds()变化,这个获取到的curShowTimeSeconds变成了上一秒时间(静态的)。
所以根本原因是:我们要动态生成彩色小球。
方法就是:通过添加nextShowTimeSeconds = getCurShowTimeSeconds(),使nextShowTimeSeconds变成动态的当前秒数,并通过动态的nextShowTimeSeconds与静态的curShowTimeSeconds比较(源码52-72行),才能用addBalls动态获得彩色小球。
const endTime = new Date("2016/11/6,18:47:00"); 这句设置错了 这句好好看下 认真听课
你的浏览器版本太低了吧 建议用新版本的谷歌浏览器
计算屏幕的帧率的话 用requestAnimationFrame不行?
你把11改成10就OK啦
浏览器一直报错,虽然倒计时的效果是好使的。
例子中的update()是负责时间的更新,检测数值变化。
将语句块分类有利于阅读。
我知道了。。。写错了。。。
找了半天 你绘制的时候写错了:
draw(TOP+93*(RADIUS+1), LEFT, oContext, parseInt(sec/10));
改为
draw(TOP+93*(RADIUS+1), LEFT, oContext, parseInt(sec%10));
老师前面就说过,setInterval()中的两个函数,是一个设置动画的基本框架。多年的开发经验。。。。。。。
找到原因了,cxt.clearRect(0,0,WINDOW_WIDTH,WINDOW_HEIGHT);这样就可以了,WINDOW_WIDTH和WINDOW_HEIGHT的位置不能颠倒
你看红框里的参数,两个都应该是seconds