1

我正在使用操纵杆开发 Arduino 游戏。我有 4 个 LED 灯,每 2 秒,其中 1 个会亮起。使用操纵杆,您必须尽快做出反应才能关闭 LED 灯。例如,如果左侧 LED 亮起,您必须在操纵杆上向左移动才能将其关闭。

这是我的操纵杆的代码:

var joystick = new five.Joystick({
  pins: ["A0", "A1"],
 });

joystick.on("change", function() {
  let x = this.x;
  let y = this.y
 });

所以每次操纵杆的位置发生变化,let x都会let y得到更新。

现在我将向您展示该函数的代码。此功能将每 2 秒重新启动一次。问题是我需要操纵杆中的let xandlet y来使这个功能起作用,但我不知道如何访问它们。

const playGame = () => {
  setInterval(() => {
    console.log(x, y);
  }, 2000);
};

结果console.log(x, y)undefined.

4

1 回答 1

0

您需要在更改事件之外定义 x 和 y 以便您可以访问它

let x, y
var joystick = new five.Joystick({
  pins: ["A0", "A1"],
 });

joystick.on("change", function() {
  x = this.x;
  y = this.y
 });
const playGame = () => {
  setInterval(() => {
    console.log(x, y);
  }, 2000);
};

这是为了修复您的示例,但还有更多 J5 方式(取自文档

let x, y
var joystick = new five.Joystick({
  pins: ["A0", "A1"],
  freq: 100 // this limit the joystick sample rate tweak to your needs
});


joystick.on("change", function() { // only fire as the sample rate freq
  x = this.x;
  y = this.y
});
于 2019-12-17T07:19:18.827 回答