Processing 无法在处理中移动形状

Processing 无法在处理中移动形状,processing,p5.js,Processing,P5.js,我试图创建一个可以在地图上左右移动的可移动实体。我有一个设置实体初始位置的贴图,但一旦按下“a”或“d”键,角色只会稍微移动,然后在释放键后重置到其初始位置。我有一个布尔变量playerIsSpawned,以确保角色的位置只在该位置设置一次,但这似乎并没有解决任何问题。这是什么原因造成的?我如何修复它 var start_map = [ [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0,

我试图创建一个可以在地图上左右移动的可移动实体。我有一个设置实体初始位置的贴图,但一旦按下“a”或“d”键,角色只会稍微移动,然后在释放键后重置到其初始位置。我有一个布尔变量playerIsSpawned,以确保角色的位置只在该位置设置一次,但这似乎并没有解决任何问题。这是什么原因造成的?我如何修复它

var start_map = [
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 0, 0, 0, 0, 0, 0, 0],
  [0, 9, 0, 0, 0, 0, 0, 0],
  [1, 1, 1, 1, 1, 1, 1, 1]
];
var playerX;
var playerY;

function drawPlayer() {
  fill(0);
  rect(playerX, playerY, 50, 50);
}

function drawMap(map) {
  // The x and y do not represent the x and y axis
  // Keep in mind a 2d array is an array of an array
  noStroke();
  var playerIsSpawned = false;

  for (var x = 0; x < map.length; x++) {
    for (var y = 0; y < map.length; y++) {
      // Background
      if (map[y][x] == 0) {
        fill(184, 236, 255);
        rect((10 + 50*x), (10 + 50*y), 50, 50);
      }
      // Ground
      else if (map[y][x] == 1) {
        fill(51, 153, 51);
        rect((10 + 50*x), (10 + 50*y), 50, 50);
      }
      // Player
      else if (map[y][x] == 9) {
        if (playerIsSpawned == false) {
          playerX = (10 + 50*x);
          playerY = (10 + 50*y);
          playerIsSpawned = true;
        }
        fill(184, 236, 255);
        rect((10 + 50*x), (10 + 50*y), 50, 50);
      }
    }
  }
  drawPlayer();
  function keyPressed() {
    if (key == "d") {
      playerX += 5;
    }
    else if (key == "a") {
      playerX -= 5;
    }
  }
  keyPressed();
}

function setup() {
  background(0);
  createCanvas(800, 800);
}

function draw() {
  drawMap(start_map);
}
你在地图上声明玩家已被典当。每次通过那里都会重置为false


也可以考虑将键按下到与绘图和安装相同的顶层,并将调用的键清除到绘制环内。按下/< P>这绝对不是代码,因为处理代码使用java语法。你是在使用Processing.js还是P5.js?@Mike'Pomax'Kamermans这是P5.js,它是Processing家族的一部分。我添加了p5.js标记,但我认为保留processing标记也是合适的,因为p5.js基本上是一个JavaScript处理端口。Processing.js是一个简单的语法和API兼容的端口,P5.js是如果我们不得不再次进行处理的话该怎么办,但我们使用js作为基础。即使它真的很酷,它也完全不同。@Mike'Pomax'Kamermans谢谢你的工作。我倾向于认为Processing.js在很多方面都比JavaScript的处理端口好:它是一个神奇的库,允许大多数处理草图在浏览器中运行,而不是在JVM中运行。另一方面,当您尝试将关键函数draw、rect等更直接地移植到JavaScript时,就会得到p5.js。这两个项目都令人印象深刻,都在加工领域发挥着作用。