【发布时间】:2018-07-21 22:26:21
【问题描述】:
我制作了一个 javascript 平台游戏,玩家可以使用它向左移动、向右移动或跳跃 键盘上的箭头键。我希望能够使用 javascript 按钮来执行此操作 我做了而不是键盘箭头键。
这些是我的 javascript 按钮。
<button id="left" type="button">Left</button>
<button id="up" type="button">Jump</button>
<button id="right" type="button">Right</button>
这是我未经编辑的 javascript 代码,它使用它使角色可以跳跃,或者使用键盘箭头键向左或向右移动。
var playerXSpeed = 7;
var gravity = 30;
var jumpSpeed = 17;
Player.prototype.update = function(time, state, keys) {
let xSpeed = 0;
if (keys.ArrowLeft) xSpeed -= playerXSpeed;
if (keys.ArrowRight) xSpeed += playerXSpeed;
let pos = this.pos;
let movedX = pos.plus(new Vec(xSpeed * time, 0));
if (!state.level.touches(movedX, this.size, "wall")) {
pos = movedX;
}
let ySpeed = this.speed.y + time * gravity;
let movedY = pos.plus(new Vec(0, ySpeed * time));
if (!state.level.touches(movedY, this.size, "wall")) {
pos = movedY;
} else if (keys.ArrowUp && ySpeed > 0) {
ySpeed = -jumpSpeed;
} else {
ySpeed = 0;
}
return new Player(pos, new Vec(xSpeed, ySpeed));
};
这是检查箭头键是向上还是向下的代码部分。如果箭头键向上,则角色不会移动。如果它们被按住,那么角色会继续移动,直到松开按键才会停止。我知道我必须做更多的事情,以便它与我的 javascript 按钮交互,但我不知道该怎么做。
function trackKeys(keys) {
let down = Object.create(null);
function track(event) {
if (keys.includes(event.key)) {
down[event.key] = event.type == "keydown";
event.preventDefault();
}
}
window.addEventListener("keydown", track);
window.addEventListener("keyup", track);
return down;
}
var arrowKeys =
trackKeys(["ArrowLeft", "ArrowRight", "ArrowUp"]);
【问题讨论】:
标签: javascript html css button 2d-games