简介
寒假开始,花了5天时间利用Egret引擎开发了一款HTML5小游戏,最终界面效果如下:
【游戏首页】
【游戏图鉴】
【游戏截图】
项目结构
主要的类就是list.ts和Main.ts,再就是存放游戏素材的resourc文件夹
创建对战消息:
let show_game:egret.TextField=new egret.TextField();
show_game.text="对战消息:";
show_game.x=1000;
show_game.y=1000;
this.parent.addChild(show_game);
let show_game1:egret.TextField=new egret.TextField();
show_game1.text=" 游戏开始了";
show_game1.x=1000;
show_game1.y=1070;
this.parent.addChild(show_game1);
let show_game2:egret.TextField=new egret.TextField();
show_game2.text=" BOSS蠢蠢欲动";
show_game2.x=1000;
show_game2.y=1140;
this.parent.addChild(show_game2);
动态更改游戏消息:
function message_content_chage(content:string){//实现替换消息内容
message_position_chage(show_game2.text);
show_game2.text=content;
}
function message_position_chage(content:string){//实现两个消息框内容更迭
show_game1.text=content;
}
由于是双人游戏,需要处理对键盘按键的控制,不可避免的会出现同时按键,最后一次按键的行为有效,前一次失效的情况。
比如:玩家1按键向左移动,玩家2紧随其后按键向左移动,最终结果是玩家2移动,玩家1不动,这个问题需要解决。
我们可以采取一种别的处理方式,既然他对keydown事件的处理只能倾听最后一个,我们可以采取keydown和keyup结合的方式,利用一个布尔型数组存储以各个按键的keycode值对应的下标的值,按键之后(keydown)将其设为true,松开键(keyup)设为false,将判断分散到数组中,解决了冲突的问题。
var key_pressed={};//监听数组,用来存储键盘状态
//通过监听keyup执行双人游戏
document.addEventListener("keyup",function(e){//键盘抬起,不移动
console.log(e.keyCode+"is up")
key_pressed[e.keyCode]=false;
});
//通过监听keyup执行双人游戏
document.addEventListener("keydown",function(e){//键盘按下,执行某些事件
console.log(e.keyCode+"is down")
key_pressed[e.keyCode]=true;
});