javascript - 访问不断变化的变量将不起作用(Johnny-Five 操纵杆)

标签 javascript class arduino johnny-five

我正在开发一款带有操纵杆的 Arduino 游戏。我有 4 个 LED 灯,每 2 秒,其中 1 个会亮起。使用操纵杆时,您必须尽快使用react才能关闭 LED 灯。例如,如果左侧 LED 亮起,您必须向左操作操纵杆才能将其关闭。

这是我的操纵杆的代码:

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

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

因此每次操纵杆的位置发生变化时,let xlet y 都会得到更新。

现在我将向您展示该函数的代码。该功能每 2 秒重新启动一次。 问题是我需要操纵杆上的 let xlet y 才能使该功能正常工作, 但我不知道如何访问它们。

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

console.log(x, y) 结果为未定义

最佳答案

您需要在更改事件之外定义 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
});

关于javascript - 访问不断变化的变量将不起作用(Johnny-Five 操纵杆),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59364740/

相关文章:

javascript - Jquery - 获取行跨度超过一的 <td> 标记的值

Javascript ES6 在同一个类中的另一个方法中调用一个方法显示错误我正在调用的类未定义

java - 我应该把不用的方法留在类里面吗?

google-app-engine - 在 Ubuntu 中执行 GAE SDK 时如何解决此错误?

javascript - 使用 Mocha 和 Chai-as-Promised 测试被拒绝 promise 的特定属性

javascript - 从 for 循环内部返回一个 promise

c - 阅读某人的 C 代码,似乎无法破译按位运算

c++ - C++中的串口,Unix

javascript - 如何在 Karma 中配置 System.js 以测试依赖于 moment.js 的代码

斯卡拉炸弹? (就像一个 zipper 炸弹)