js实现键盘与按钮控制容器移动

html:

<button id="up">Up</button>
<button id="down">Down</button>
<button id="left">Left</button>
<button id="right">Right</button>


<div id="object" style="width: 50px; height: 50px; background-color: red; position: absolute; "></div>

js:

    //盒子移动

   var object = document.getElementById('object');

var upButton = document.getElementById('up');

var downButton = document.getElementById('down');

var leftButton = document.getElementById('left');

var rightButton = document.getElementById('right');

var isUpPressed = false;

var isDownPressed = false;

var isLeftPressed=false;

var isRightPressed=false;

var velocity = 5; // 每次移动的速度

var width1=50;

let height=50;

function updatePosition() {

  var top = parseInt(object.style.top, 10) || 20;//添加碰撞

  var left=parseInt(object.style.left,10) || 20;

  //碰撞

  if(left>=500) left=500;

  if(top>=500) top=500;

  if (isUpPressed && !isDownPressed) {

    object.style.top = (top - velocity) + 'px';

    object.style.backgroundColor='black';

  } else if (isDownPressed && !isUpPressed) {

    object.style.top = (top + velocity) + 'px';

    object.style.backgroundColor='yellow';

    width1+=1;

    height++;

    object.style.width=width1+'px';

    object.style.height=height+'px';

  }

  else if (isLeftPressed && !isRightPressed) {

    object.style.left = (left - velocity) + 'px';

    object.style.backgroundColor='green';

  }

  else if (isRightPressed && !isLeftPressed) {

    object.style.left = (left + velocity) + 'px';

    object.style.backgroundColor='blue';

  }



}



function onKeyDown(event) {

  if (event.key === 'Up' || event.key === 'ArrowUp' || event.key === 'w') {

    isUpPressed = true;

  } else if (event.key === 'Down' || event.key === 'ArrowDown' || event.key === 's') {

    isDownPressed = true;

  }

  else if (event.key === 'Left' || event.key === 'ArrowLeft' || event.key === 'a') {

    isLeftPressed = true;

  }

  else if (event.key === 'Right' || event.key === 'ArrowRight' || event.key === 'd') {

    isRightPressed = true;

  }

  updatePosition();

}



function onKeyUp(event) {

  if (event.key === 'Up' || event.key === 'ArrowUp' || event.key === 'w') {

    isUpPressed = false;

  } else if (event.key === 'Down' || event.key === 'ArrowDown' || event.key === 's') {

    isDownPressed = false;

  }

  else if (event.key === 'Right' || event.key === 'Arrowright' || event.key === 'd') {

    isRightPressed = false;

  }

  else if (event.key === 'Left' || event.key === 'ArrowLeft' || event.key === 'a') {

    isLeftPressed = false;

  }

  updatePosition();

}



// 监听键盘按下和抬起事件

window.addEventListener('keydown', onKeyDown);

window.addEventListener('keyup', onKeyUp);

// 监听按钮按下和抬起事件

upButton.addEventListener('mousedown', () => isUpPressed = true);

upButton.addEventListener('mouseup', () => isUpPressed = false);

downButton.addEventListener('mousedown', () => isDownPressed = true);

downButton.addEventListener('mouseup', () => isDownPressed = false);

leftButton.addEventListener('mousedown',()=>isLeftPressed=true);

leftButton.addEventListener('mouseup',()=>isLeftPressed=false);

rightButton.addEventListener('mousedown',()=>isRightPressed=true);

rightButton.addEventListener('mouseup',()=>isRightPressed=false);



// 定时更新位置

setInterval(updatePosition, 10);

效果展示:

感谢阅读

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值