前面的准备工作已经做完,马上开始我们的第一站吧,游戏背景和游戏音乐的实现。
bg.gif
1.为了项目结构清晰和代码规范,我们把游戏拆解为层次结构来实现,在src文件夹下新建一个目录background,这个目录的内容就是本章实现的核心.
image.png
2.在目录下新建一个类BackgroundGame并且继承egret.DisplayObjectContainer,关于该类,自行查阅API,我的理解就是对象容器显示接口,每一个显示的对象都可以看做一个小模块,然后填充到eui.UILayer容器中,用于丰富我们的容器。
3.关于项目编译过程,查看官网文档
eui.UILayer:游戏的入口类就是Main.ts类下,继承于eui.UILayer
LoadingUI:游戏加载过程的进度显示,可以根据自己游戏风格更改
ThemeAdapter:皮肤类,关于UI上面的逻辑和开发可以纯代码实现,也可以通过布局文件来实现,我比较喜欢纯代码风格,所以整个项目我都不会使用皮肤方式。
其他类都是项目自行生成,暂时没有用到,就不在多说,直接打开我们需要实现的类BackgroundGame。
每个类好像只能有一个构造方法,对于我这个java控来说有点诡异,如果有继承还需要在构造方法中实现super
class BackgroundGame extends egret.DisplayObjectContainer{
public constructor() {
super();
this.addEventListener(egret.Event.ADDED_TO_STAGE,this.loadBackground,this);
}
}
构造方法中有一行代码addEventListener,用于监听填充到容器中完成后的事件,这样可以获取到正确的容器高宽。
addEventListener第一个参数是用于监听的事件,查看官方API;第二个参数是事件回调,这里就是填充容器完毕后执行改方法;第三个参数是事件作用域(当前类)。
4.实现背景逻辑
/**
* 地图上半部分(隐藏)
*/
private mBackgroundTop:egret.Bitmap;
/**
* 地图显示部分
*/
private mBackgroundBottom:egret.Bitmap;
/**
* 屏幕的高度
*/
private stageH:number;
/**
* 地图滚动速度,越小滚动越快。毫秒
*/
private mBgSpeed = 4000;
实现回调方法loadBackground:
public loadBackground() : void{