之前的入门系列已经介绍过createjs的基础知识。
接下来,我们就来用createjs制做游戏。
建议先到文章的最后下载源码,对应源码来看。
解压后,目录结构如下:
我们暂时没有用图片。目录下只有一个index.html和一堆js文件。
>>index.html
<meta name="viewport" content="width=device-width,user-scalable=no"/>
这句可以防止手机端双击时候页面缩放。
<canvas class="gameMain" id="gameMain" height="800" width="480" style="background:#00cccc;">浏览器暂不支持canvas</canvas>
这句定义一个canvas,设置id和宽高,这里要注意宽高用width、height,而不是style中的width、height。
<script type="text/javascript" src="js/HGame.js"></script>
<script type="text/javascript" src="js/HResources.js"></script>
这两句用来加载js文件,这里只加载了HGame.js和HResources.js,其余js文件都是通过代码来加载的,当然也可以直接用script标签来加载,各有利弊。
window.onload=function(e){ HGame.initGame("gameMain"); }
这里就是游戏的入口了。
文档加载完成之后,我们调用了HGame.initGame("gameMain");其中gameMain是canvas的id(或class),HGame.initGame方法是在HMain.js中定义的。接下来我们就来看HMain.js。
>>HMain.js
HGame是一个对象,HGame.data中定义了一些变量,用作全局变量,HGame.initGame方法中只有一句,new HMain(canvasId);new了一个HMain。
HMain是一个类(js中就是用function来作为类使用的)。
HMain用来控制游戏的基本流程。流程如下:
加载资源——>初始化——>游戏开始界面——>游戏界面——>游戏结束界面——>返回游戏开始界面
资源加载功能在HResources.js中实现,资源加载完成之后,初始化游戏界面,进入游戏逻辑循环;
整个游戏我们分为3个界面:开始界面、游戏界面、游戏结束界面。一开始显示开始界面,等待玩家点击开始按钮,进入游戏界面,游戏界面实现游戏逻辑,游戏结束,进入游戏结束界面,游戏结束界面等待用户点击重新开始,回到开始界面。
每一个界面都是用一个继承自createjs.Container的类来实现,每个界面逻辑完成之后通过发送事件来通知主界面。
具体实现可以看源码,并结合之前的教程。
>>HResources.js
HResources实现了加载资源,以及获取加载的资源。目前支持js,图片,mp3的加载。
HResources.data中配置要加载的资源。type是资源类别;src是资源路径,可以是相对路径也可以是绝对路径;tag用来获取资源,不要有重名的。
HResources.preLoad(progress,complete)启动加载资源。progress(percent),加载过程中回调,用来获取加载进度,参数是0-1;complete(),加载完成后调用。
HResources.getResourceByTag(tag)用来获取加载到的资源,参数就是资源配置中的tag,字符串类型。
由于水平有限,不敢保证兼容新,所以如果是商业项目,建议使用createjs中的PreloadJS来加载资源。
>>HUtils.js
HUtils.js中是一些常用的工具函数,等用到了再说。
>>HKeyBoard.js
HKeyBoard.js是用来管理键盘事件的,pc上有用,移动端一般不会用键盘操作,可以去掉。
>>HMenuLayer.js
HMenuLayer.js定义了开始界面,继承自createjs.Container,定义了一个show和一个hide方法,从名字就可以看出,分别实现显示和隐藏的功能。为了效果华丽,用到了createjs.Tween来缓动。
用new createjs.Shape()定义了一个纯色的背景,用HUtils.createText()创建了一个文本对象。用this来侦听点击事件,点击之后,发送complete事件。
>>HOverLayer.js
HOverLayer.js定义了游戏结束界面,和HMenuLayer.js实现起来很像。
>>HGameLayer.js
这个是最关键的,游戏逻辑的实现全在这里。
目前我们也只是创建了一个背景,一个文本对象,只要玩家点击一下,游戏就结束了。当然你也可以改成点击n下,游戏结束。
到目前为止,我们已经实现了一个完整的游戏。
后面我们将在此基础上稍作修改,实现一些复杂的游戏。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。