。任何一种知名编程语言都可用于游戏开发(当然,某些语言会让游戏开发流程变得更加困难)。总而言之,游戏开发虽非易事,但也并不一定门槛过高。在今天的文章中,我们就一起探讨如何以简便的方式打造属于自己的游戏作品。
AD:
游戏循环的主要作用之一在于调用update函数,即负责游戏内容的更新(包括图形及对象等)。
如果我们使用While语句来调用update函数,那么一方面浏览器很可能阻断该函数,另一方面我们也无法控制update函数的调用频率、导致执行效率低下。换言之,我们将无法控制游戏的FPS比率。
另一种常用的游戏循环创建方式则是利用setInterval函数,通过这种方式我们能够更轻松地控制update函数的调用频率:
以上代码中出现的“FPS”指的可不是第一人称射击,而是每秒帧数,也就是我们常说的帧速率(也被称为帧频率)。它负责控制设备每秒钟显示不同画面内容的次数。人眼与大脑每秒钟最多只能分辨10到12幅画面,不过为了达到流畅的画面效果(例如游戏与电影),FPS值需要设置得更高一些。
第一部分-从EASEJS入手
尽管Game Loop的创建看似简单,但以此为基础进行游戏开发实在麻烦多多。下面我将利用EASEJS库所提供的Game Loop及其它相关功能打造自己的游戏作品。
EaselJS提供了一套非常直接的解决方案,能够容纳丰富的图形元素并与HTML 5 Canvas进行交互。它还提供一套专用API,旨在为Flash开发者提供更为熟悉的使用体验且同时能够识别JavaScript。它包含一套完整的分层显示列表、一套核心交互模型以及帮助类等等,从而显著简化了Canvas的使用流程。
现在我们开始处理EASEJS,首先要做的是创建一个新的对象类型Stage。
所谓stage,是指专为显示列表设置的基础Container。每当我们调用其Stage/tick方法,它都会将显示列表呈现在目标canvas当中。
在完成了Stage对象的初始化之后,我们可以开始游戏中添加更多元素。接下来是创建Bitmap对象(也是EASEJS中的组成部分)用于接收图形径,然后利用addChild函数向Stage中添加新的Bitmap对象。当所有游戏元素都被添加到Stage对象当中后,我们需要通过调用createjs.Ticker.setFPS(30)来启动游戏循环;最后登记“tick”事件(这样每当tick事件被触发时,游戏都会进行一次更新)。
Ticker会根据设定好的时间间隔提供集中式tick或心跳。可订阅该tick事件以确保每隔固定时段即获得通知。
需要注意的是,tick事件的时间间隔被称为“目标间隔”,一旦CPU利用率较高、其间隔时间就会受到影响。Ticker类使用静态接口(例如Ticker.getPaused()),且不应被实例化。
网友评论 ()条 查看