首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问不断变化的变量将不起作用(Johnny-Five操纵杆)

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

Stack Overflow用户
提问于 2019-12-17 05:47:53
回答 1查看 46关注 0票数 1

我在做一个有操纵杆的Arduino游戏。我有4个LED灯,每隔2秒,其中一个就会亮起来。使用操纵杆,你必须尽可能快地做出反应来关闭LED灯。因此,例如,如果左侧LED亮起,您必须在操纵杆上向左转才能将其关闭。

这是我的操纵杆的代码:

代码语言:javascript
运行
复制
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来使这个函数工作,但我不知道如何访问它们。

代码语言:javascript
运行
复制
const playGame = () => {
  setInterval(() => {
    console.log(x, y);
  }, 2000);
};

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-17 15:19:19

您需要在change事件之外定义x和y,才能访问它

代码语言:javascript
运行
复制
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的方法(取自文档

代码语言:javascript
运行
复制
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
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59364740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档