最近使用了轻量级的 Canvas 类库 ZRender开发了一些自定义图件,所以想试试用zrender开发小游戏怎么样,自己也没什么经验,所以写着玩吧,可能有些逻辑部分写的不是很好。。这个小游戏很简单,内容为用篮子接水果,接到苹果10分,橘子5分,菠萝15分,草莓30分,通过键盘的左右按键控制篮子左右移动,最后得分为累计接到的水果得分。
一:
首先我们需要一些水果的小图标,那么在图标网站上面去下载一些图标。这里下载了苹果、菠萝、橘子、草莓的图标。
当然如果要用篮子接水果的话,我们还需要下载一个篮子的图标。这里下载的图标都是png格式的,一般是用到它的透明背景特点
二:
添加如下标签布局,设置myimg部分display:none 目的是在window.onload的时候,能够确保这些图标都加载完毕,同时放置一个div用于zrender初始化。
<div>
<div id="myimg" style="display:none">
<img src="images/apple.png"/>
<img src="images/orange.png"/>
<img src="images/pineapple.png"/>
<img src="images/strawberry.png"/>
<img src="images/basket.png"/>
</div>
<div class="example-container" style="width:500px;height:600px;border:1px solid black;margin:0 auto"></div>
</div>
zrender初始化
var container=document.getElementsByClassName('example-container')[0];
var zr = zrender.init(container);
三:
这里向zrender中添加了四个group,zrBGGroup用于添加背景元素,zrGroup用于放置水果,bottomGroup用于放置篮子,effectGroup用于放置加分的效果。设置group的position,方便后面元素定位。
this.zrBGGroup=new zrender.Group();
this.zrBGGroup.position=[0,0];
this.zr.add(this.zrBGGroup);
this.zrGroup=new zrender.Group();
this.zrGroup.position=[0,40];
this.zr.add(this.zrGroup);
this.bottomGroup=new zrender.Group();
this.bottomGroup.position=[0,this.h-40];
this.zr.add(this.bottomGroup);
this.effectGroup=new zrender.Group();
this.effectGroup.position=[0,0];
this.zr.add(this.effectGroup
四:
把背景部分都添加进去,这里背景用到了一个RadialGradient蓝紫渐变色。同时添加了得分是个zrender.Text对象,篮子是个zrender.Image对象。因为要监听键盘的按键,这里监听keydown一个事件如果keyCode等于39,说明按下了这个键->,将篮子向右移动。如果keyCode等于37,按下了<-这个键,将篮子向左移动。注意要限定移动的范围。
//绑定事件
bindEvent:function(){
var self=this;
var w=this.w;
window.addEventListener("keydown", function (e) {
var basket=self.basket;
var x=basket.position[0];
if(e.keyCode==39) //按下了这个键->
{
if((x+20)<=w-50)
{
basket.attr({
position:[x+20,0]
});