javascript - 清除屏幕并移动html5 Canvas 中的元素

标签 javascript html5-canvas game-loop

我正在使用 HTML5 Canvas 和 JS 开发一款赛车游戏。所以当汽车移动时,我想清除之前的屏幕并移动汽车。但它没有按预期工作。

代码:

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

var y = 110;
var x = 10;
var speed = 0.5;

function movePlayer(){
  //context.clearRect(0, 0, canvas.width, canvas.height);
  context.beginPath();
  var player = new Image();
  player.src = "http://www.clker.com/cliparts/J/W/v/e/2/z/vertical-top-view-of-car-md.png";
  player.onload = function(){
    context.drawImage(player, x, y, player.width*0.4, player.height*0.13);
  }

  y = y - speed;

  if (y < -15){
    y = 110;
  } 

  requestAnimationFrame(movePlayer);
}

requestAnimationFrame(movePlayer)

链接:https://jsfiddle.net/jackysatpal/6j4c5dod/1/

最佳答案

感谢 Patrick Evans,我弄清楚了问题所在。 创建新图像并设置源时犯了一个错误。更改了代码,现在可以使用了。

代码:

var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");

var y = 110;
var x = 10;
var speed = 1.5;

var player = new Image();
player.src = "./images/p1.png";

function movePlayer(){
  context.clearRect(0, 0, canvas.width, canvas.height);
  context.drawImage(player, x, y, player.width*0.4, player.height*0.13);

  y = y - speed;

  if (y < -15){
    y = 110;
  } 

  requestAnimationFrame(movePlayer);

}

requestAnimationFrame(movePlayer)

链接:https://jsfiddle.net/jackysatpal/6j4c5dod/4/

关于javascript - 清除屏幕并移动html5 Canvas 中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49987945/

相关文章:

javascript - 无法在移动设备上的输入字段中输入文本,但可以在桌面上使用

javascript - 使用溢出滚动和中心在另一个 div 内缩放 div

javascript - 无法限制选中复选框的数量

javascript - 使用 2d html5Canvas 和 ctx.rotate 函数沿其面向的方向移动对象

javascript - KineticJS:两个可拖动形状之间的曲线

javascript - 如何提取字符串的特定部分

javascript - 如何将图像分割成图 block ?

php - PHP:游戏循环(线程或排序)

java - 有没有办法在游戏循环中进行随机滴答?

java - 在安卓游戏中放置主游戏循环的位置