2-10:优化:
现在我们来解决这个问题:当我把标签切换一下的时候,这个标签下面的东西是不被执行的,所有里面的代码都是不被执行的,所以我在切换过来的时候,所以这个果实就会变得特别大,这是为什么呢?这是因为我们在绘制果实的时候,它的尺寸是和deltaTime成正比的,
if(this.l[i]<=14){
//果实生长时果实长度的变化情况
this.l[i] += this.spd[i]*deltaTime;
}
deltaTime越大,果实的尺寸越大,deltaTime是帧与帧之间的时间间隔,两帧之间的间隔时间越长呢,果实的尺寸的值就越大,所谓在我当前标签切过来之后,它现在执行的帧已经停止了,当我再切过来的时候,这两帧之间的间隔就会变得特别大,所以果实变的特别大,看起来太诡异了。这个给它定义一下。如果deltaTime大于50ms的时候,deltaTime就等于50ms,我们把它约定一下,
50太大了,我们约定为40,
if(deltaTime>40) deltaTime=40;加在gameloop里面。
这样子的话呢,它就不会出现这个问题了,我们现在做的是一个硬性的约定了,把它约定在这个值里,虽然不是科学的,但是它不会出现诡异的事情。
那再一个呢,就是Date.now()这个API我们来看一下它的含义,这有利于帮助我们理解帧与帧之间的距离,Date.now()的返回值是什么呢? The Date.now() method returns the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC.
从1970年的这个时间一直到现在的时间消逝,所以它返回的是一个真实的绝对值,好,这是一个小插曲,