gpt4 book ai didi

javascript - 如何使用 Javascript 对 Angular 移动元素?

转载 作者:行者123 更新时间:2023-12-04 07:51:43 26 4
gpt4 key购买 nike

我创建了一篇红色背景的文章,您可以使用 WASD 键移动它,但是,当我尝试创建对 Angular 线移动时,真正的麻烦就来了(例如,如果按下 W 和 D,文章应该转到右上 Angular ),它似乎不起作用:

document.body.addEventListener('keypress', function(event) {

var oldLeft = getComputedStyle(document.body).left,
newLeft;

var oldTop = getComputedStyle(document.body).top,
newTop;


oldLeft = parseInt(oldLeft, 10);
oldTop = parseInt(oldTop, 10);

console.log(event);

if ( event.key == 'a') {
newLeft = oldLeft - 10;
}
else if ( event.key == 'd') {
newLeft = oldLeft + 10;
}
else if (event.key == 'w') {
newTop = oldTop - 10;
}
else if (event.key == 's') {
newTop = oldTop + 10;
}

//HERE
if ((event.key =='w') || (event.key == 'd')) {
newLeft = oldLeft + 10;
newTop = oldTop - 10;
}



document.body.style.left = newLeft + 'px';
document.body.style.top = newTop + 'px';


});
  
article {
width: 33.75em;
padding: 1.5em;
margin: 0 auto;
background: #f6be00;
/*border: 4px solid white;*/
border-radius: 1.25em;
position: relative;
left: 0;

}

body {
position: relative;
background: red;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/styles.css">
<title>Javascript</title>
</head>
<body>
<article class="article">
<ul id="browser">

</ul>

<ul id="user">

</ul>
</article>


<script src="javascript/main.js"></script>

</body>
</html>

它转到右上 Angular ,但即使我不同时按 W 和 D 也会发生这种情况。

最佳答案

使用 keydown收集数组键的事件,以及 keyup事件等待直到所有键都被取消以执行更改:

var clicked = {};

document.body.addEventListener('keydown', function(event) {
clicked[event.key] = false; // collect keys an init as false
});

document.body.addEventListener('keyup', function(event) {
clicked[event.key] = true; // change keys to true

// if not all keys are true don't execute anything
if (!Object.values(clicked).every(Boolean)) return;

var left = parseInt(getComputedStyle(document.body).left, 10);

var top = parseInt(getComputedStyle(document.body).top, 10);

// get the clicked keys
const keys = Object.keys(clicked);

// iterate them and change the values
keys.forEach(function(key) {
switch (key) {
case 'a':
{
left -= 10;
break;
}

case 'd':
{
left += 10;
break;
}

case 'w':
{
top -= 10;
break;
}

case 's':
{
top += 10;
break;
}
}
});

clicked = {}; // clear clicked keys

document.body.style.left = left + 'px';
document.body.style.top = top + 'px';
});
article {
width: 33.75em;
padding: 1.5em;
margin: 0 auto;
background: #f6be00;
/*border: 4px solid white;*/
border-radius: 1.25em;
position: relative;
left: 0;
}

body {
position: relative;
background: red;
}
<article class="article"></article>

关于javascript - 如何使用 Javascript 对 Angular 移动元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66931061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com