网页游戏开发秘笈
上QQ阅读APP看书,第一时间看更新

3.6 第六步:令鼹鼠从洞中钻出来

当前所有鼠洞都处于激活状态。而在这一步里,我们改为每次只激活一个鼠洞,并在两秒钟之后切换至另一个鼠洞。首先,根据程序清单3.15来调整game.js中的update函数,并在函数前面先设定一些变量,供函数中的代码使用。

程序清单3.15 在update函数中加入逻辑代码

currentMoleTime表示当前鼠洞已经激活了多长时间。下一行表示游戏应该在当前这个鼠洞激活了多少秒之后,再去激活另外一个鼠洞。若想使鼹鼠探出头来的时间长一些,则可以增加此数值。在update函数中,我们把原来检测键盘左键所用的那段范例代码删掉,改为程序清单3.15中的这四行粗体代码。现在我们就会用到函数中的dt参数了,该参数表示这次执行update函数时,距离上次隔了多久(以秒为单位,可能带有小数点,比如0.017)。这个带有小数点的时间差会累计到currentMoleTime里面。如果发现鼹鼠在当前这个鼠洞里的停留时间超过两秒,那么就随机挑选一个新的鼠洞,将其激活,并把计时器清零。

游戏的主draw函数基本不变,但是需要设置每个鼠洞的active属性,以反映其是否处于激活状态。请按照程序清单3.16来修改此函数。

程序清单3.16 设置各个hole对象的active状态

只需修改粗体部分即可,它们就是设置active状态所用的代码。由于我们决定把设置active属性的任务放在此处来做,所以就无须像上一步那样,在创建完每个hole对象之后都要立刻设定其active属性。也就是说,因为draw函数已经设置了active属性,所以需要把game.makeHoles函数中的这一行删掉:

用浏览器打开index.html文件,即可看到鼹鼠在鼠洞之间钻来钻去了。