egret开发HTML5小游戏-疯狂大乱斗

简介

寒假开始,花了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;
    
});
发布了3 篇原创文章 · 获赞 8 · 访问量 180

猜你喜欢

转载自blog.csdn.net/qq_45085030/article/details/104032179
今日推荐