HTML5游戏_基于DOM平台跳跃小游戏开发_9.按键监听

HTML5游戏_基于DOM平台跳跃小游戏开发

按键监听

  • 视频讲解

HTML5游戏

  • 效果图
    在这里插入图片描述

  • 本章知识点:

  • 对象自定义名称属性,可以用变量来命名属性名称

//这段代码把多个属性(品牌, 型号, 排量)赋给名为 汽车 的对象
var 汽车1 = 
{
	品牌: "劳斯莱斯", 
	型号: "幻影",
	排量:"6.7T"
};
汽车1.品牌;	//劳斯莱斯

var 汽车2 = 
{
	"品牌": "劳斯莱斯", 
	型号: "幻影",
	排量:"6.7T"
};
汽车2.品牌;	//劳斯莱斯
汽车2["品牌"];	//劳斯莱斯
  • addEventListener(HTMLDOM事件, 事件触发时执行的函数) 方法用于向指定元素添加事件句柄.同时将HTMLDOM事件传递给事件触发时执行的函数.

新建 按键监听.js

//定义全局对象 按键字符 keycode 编码对应属性
var 按键字符 = 
{
	37: "左",	//左方向键
	38: "上",	//上方向键
	39: "右",	//右方向键
	40: "下"	//下方向键
};
//定义变量 按键内容 来保存按键事件函数的返回值
var 按键内容 = 按键事件(按键字符);
/**
 *@描述:	按键事件 函数
 *@传参:	按键字符
 *@参数:	
 *@返回值:	按键
 *@创建人:	王天宇
 *@创建时间:2021/03/02
 *@修改人和其它信息:
**/
function 按键事件(按键字符) 
{
	//Object.create()方法创建一个新对象按键
	//定义对象 按键集合 为一个空对象
	var 按键集合 = Object.create(null);
	//处理事件方法,通过监听方法来调取,并从监听中获取所对应的 KeyboardEvent 按键事件 传参
	function 处理按键事件(按键事件) 
	{
		//Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身,可以判断自身是否存在或判断自身莫格属性是否存在
		//判断 按键事件.keyCode 的值是否存在于我们定义的 按键字符 对象中
		if (按键字符.hasOwnProperty(按键事件.keyCode)) 
		{
			//定义布尔变量 按下 按键事件.type 是 "keydown" 按下=true
			const 按下 = 按键事件.type == "keydown";
			//这里是个用变量来作为定义的对象名称的方法
			//给 按键集合 对象添加一个属性(属性名为变量的值)并赋值
			按键集合[按键字符[按键事件.keyCode]] = 按下;
			//取消按键事件的默认动作,如方向键默认动作可以在浏览器中移动滚动条,取消后方向键就没有这个默认动作
			按键事件.preventDefault();
		}
	}
	//监听按键按下动作
	addEventListener("keydown", 处理按键事件);
	//监听按键松开动作
	addEventListener("keyup", 处理按键事件);
	//返回按键对象
	return 按键集合;
}

//keycode 编号顺序分布
/*
keycode 0 =
keycode 1 =
keycode 2 =
keycode 3 =
keycode 4 =
keycode 5 =
keycode 6 =
keycode 7 =
keycode 8 = BackSpace
keycode 9 = Tab
keycode 10 =
keycode 11 =
keycode 12 = Clear
keycode 13 = Enter
keycode 14 =
keycode 15 =
keycode 16 = Shift_L
keycode 17 = Control_L
keycode 18 = Alt_L
keycode 19 = Pause
keycode 20 = Caps_Lock
keycode 21 =
keycode 22 =
keycode 23 =
keycode 24 =
keycode 25 =
keycode 26 =
keycode 27 = Esc Escape
keycode 28 =
keycode 29 =
keycode 30 =
keycode 31 =
keycode 32 = Space
keycode 33 = Page Up
keycode 34 = Page Down
keycode 35 = End
keycode 36 = Home
keycode 37 = Left Arrow
keycode 38 = Up Arrow
keycode 39 = Right Arrow
keycode 40 = Down Arrow
keycode 41 = Select
keycode 42 = Print
keycode 43 = Execute
keycode 44 =
keycode 45 = Insert
keycode 46 = Delete
keycode 47 = Help
keycode 48 = 0 )
keycode 49 = 1 !
keycode 50 = 2 @
keycode 51 = 3 #
keycode 52 = 4 $
keycode 53 = 5 %
keycode 54 = 6 ^
keycode 55 = 7 &
keycode 56 = 8 *
keycode 57 = 9 (
keycode 58 =
keycode 59 =
keycode 60 =
keycode 61 =
keycode 62 =
keycode 63 =
keycode 64 =
keycode 65 = a A
keycode 66 = b B
keycode 67 = c C
keycode 68 = d D
keycode 69 = e E
keycode 70 = f F
keycode 71 = g G
keycode 72 = h H
keycode 73 = i I
keycode 74 = j J
keycode 75 = k K
keycode 76 = l L
keycode 77 = m M
keycode 78 = n N
keycode 79 = o O
keycode 80 = p P
keycode 81 = q Q
keycode 82 = r R
keycode 83 = s S
keycode 84 = t T
keycode 85 = u U
keycode 86 = v V
keycode 87 = w W
keycode 88 = x X
keycode 89 = y Y
keycode 90 = z Z
keycode 91 =
keycode 92 =
keycode 93 =
keycode 94 =
keycode 95 =
keycode 96 = KP_0
keycode 97 = KP_1
keycode 98 = KP_2
keycode 99 = KP_3
keycode 100 = KP_4
keycode 101 = KP_5
keycode 102 = KP_6
keycode 103 = KP_7
keycode 104 = KP_8
keycode 105 = KP_9
keycode 106 = KP_* KP_Multiply
keycode 107 = KP_+ KP_Add
keycode 108 = KP_Enter KP_Separator
keycode 109 = KP_- KP_Subtract
keycode 110 = KP_. KP_Decimal
keycode 111 = KP_/ KP_Divide
keycode 112 = F1
keycode 113 = F2
keycode 114 = F3
keycode 115 = F4
keycode 116 = F5
keycode 117 = F6
keycode 118 = F7
keycode 119 = F8
keycode 120 = F9
keycode 121 = F10
keycode 122 = F11
keycode 123 = F12
keycode 124 = F13
keycode 125 = F14
keycode 126 = F15
keycode 127 = F16
keycode 128 = F17
keycode 129 = F18
keycode 130 = F19
keycode 131 = F20
keycode 132 = F21
keycode 133 = F22
keycode 134 = F23
keycode 135 = F24
keycode 136 = Num_Lock
keycode 137 = Scroll_Lock
keycode 138 =
keycode 139 =
keycode 140 =
keycode 141 =
keycode 142 =
keycode 143 =
keycode 144 =
keycode 145 =
keycode 146 =
keycode 147 =
keycode 148 =
keycode 149 =
keycode 150 =
keycode 151 =
keycode 152 =
keycode 153 =
keycode 154 =
keycode 155 =
keycode 156 =
keycode 157 =
keycode 158 =
keycode 159 =
keycode 160 =
keycode 161 =
keycode 162 =
keycode 163 =
keycode 164 =
keycode 165 =
keycode 166 =
keycode 167 =
keycode 168 =
keycode 169 =
keycode 170 =
keycode 171 =
keycode 172 =
keycode 173 =
keycode 174 =
keycode 175 =
keycode 176 =
keycode 177 =
keycode 178 =
keycode 179 =
keycode 180 =
keycode 181 =
keycode 182 =
keycode 183 =
keycode 184 =
keycode 185 =
keycode 186 =
keycode 187 = =+
keycode 188 = ,<
keycode 189 = -_
keycode 190 = .>
keycode 191 = /?
keycode 192 = `~
keycode 193 =
keycode 194 =
keycode 195 =
keycode 196 =
keycode 197 =
keycode 198 =
keycode 199 =
keycode 200 =
keycode 201 =
keycode 202 =
keycode 203 =
keycode 204 =
keycode 205 =
keycode 206 =
keycode 207 =
keycode 208 =
keycode 209 =
keycode 210 = plusminus hyphen macron
keycode 211 =
keycode 212 = copyright registered
keycode 213 = guillemotleft guillemotright
keycode 214 = masculine ordfeminine
keycode 215 = ae AE
keycode 216 = cent yen
keycode 217 = questiondown exclamdown
keycode 218 = onequarter onehalf threequarters
keycode 219 = [{
keycode 220 = \|
keycode 221 = ]}
keycode 222 = '"
keycode 223 =
keycode 224 =
keycode 225 =
keycode 226 =
keycode 227 = multiply division
keycode 228 = acircumflex Acircumflex
keycode 229 = ecircumflex Ecircumflex
keycode 230 = icircumflex Icircumflex
keycode 231 = ocircumflex Ocircumflex
keycode 232 = ucircumflex Ucircumflex
keycode 233 = ntilde Ntilde
keycode 234 = yacute Yacute
keycode 235 = oslash Ooblique
keycode 236 = aring Aring
keycode 237 = ccedilla Ccedilla
keycode 238 = thorn THORN
keycode 239 = eth ETH
keycode 240 = diaeresis cedilla currency
keycode 241 = agrave Agrave atilde Atilde
keycode 242 = egrave Egrave
keycode 243 = igrave Igrave
keycode 244 = ograve Ograve otilde Otilde
keycode 245 = ugrave Ugrave
keycode 246 = adiaeresis Adiaeresis
keycode 247 = ediaeresis Ediaeresis
keycode 248 = idiaeresis Idiaeresis
keycode 249 = odiaeresis Odiaeresis
keycode 250 = udiaeresis Udiaeresis
keycode 251 = ssharp question backslash
keycode 252 = asciicircum degree
keycode 253 = 3 sterling
keycode 254 = Mode_switch
*/


  • 有了按键监听函数我们就可以在html中直接显示出监听的按键情况
<!doctype html>
<html>
	<head>
		<meta charset="utf-8">
		<title>html跳跃小游戏</title>
		<!--CSS样式-->
		<link rel="stylesheet" type="text/css" href="./css/css样式.css">
	</head>
	<body>
		<h5 id="fps" style="color: #ffffff;">FPS=0</h5>
		<!--pre标签可定义预格式化的文本-->
		<pre id="按键监听测试" style="color: #ffffff;"></pre>
		<!--JS脚本-->
		<script type="text/javascript" src="./js/精灵.js"></script>
		<script type="text/javascript" src="./js/地图数组.js"></script>
		<script type="text/javascript" src="./js/工具函数.js"></script>
		<script type="text/javascript" src="./js/按键监听.js"></script>
		<script type="text/javascript" src="./js/生成地图数据.js"></script>
		<script type="text/javascript" src="./js/生成关卡.js"></script>
		<script type="text/javascript" src="./js/运行帧动画.js"></script>
		<script>
		//初始化程序
		function 初始化()
		{
			//开始第一个关卡
			开始关卡(0);
		}
		function 开始关卡(n) 
		{
			//生成地图数据
			var 新地图数据 = new 生成地图数据(地图数组[n]);
			//生成关卡
			var 新关卡 = new 生成关卡(document.body, 新地图数据);
			//运行帧动画
			运行帧动画(function(每帧执行时间) 
			{
				/*这个方法是游戏里每帧运行的所有内容,包括动画/判断碰撞/按键监听等*/
				//播放关卡地图里精灵一帧动画动作
				新地图数据.动画(每帧执行时间);
				//重新绘制一帧关卡
				新关卡.画精灵层(每帧执行时间);
				//计算每秒帧数
				document.getElementById("fps").innerHTML = "FPS=" + (1 / 每帧执行时间).toFixed(2);
				//每帧显示按键信息,&#9代表tab制表符
				document.getElementById("按键监听测试").innerHTML = 
					"按键左=" + (按键内容.=== true) + 
					"&#9按键右=" + (按键内容.=== true) + 
					"&#9按键上=" + (按键内容.=== true) +
					"&#9按键下=" + (按键内容.=== true);
				//执行每帧动作方法 返回false时结束运行帧动画, 返回其他则继续执行动画
				return true;
			});
		}
		初始化();
		</script>
	</body>
</html>

运行html,我们可以看到当你按下方向键后会显示指定的内容
运行效果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱玎科技首席执行官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值