繁体   English   中英

如何将变量分配给 p5*js 中的数组?

[英]How do I assign a variable to an array in p5*js?

这是我的代码:

var icons = [0]
var iconsx = [10]
var iconsy = [10]
var jog = 0
var iconxbuffer
var iconybuffer

function setup() {
  createCanvas(650, 500);
   }

function draw() {
  background(255,199,248);
  
  fill(255,248,184);
  
  rect(175, 435, 300, 55, 45);
  fill(255,38,241)
  
  if (mouseIsPressed === true){

  rect(winMouseX, winMouseY, 45, 55)
  let iconsx[0] = winMouseX}
  
  else{let iconxbuffer = iconsx[0]; let iconybuffer = iconsy[0]
    rect(iconxbuffer, iconybuffer, 45, 55)}
   console.log (iconsx)
  }
   

在第 23 行,我尝试将 winMouseX 分配给 iconsx[0],但是当我运行这段代码时,出现错误:

🌸 p5.js says: 
Syntax Error - Symbol present at a place that wasn't expected.
Usually this is due to a typo. Check the line number in the error for anything missing/extra.

+ More info: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Unexpected_token#What_went_wrong 

我相信我理解这里的逻辑,因为我在按住鼠标按钮时将 iconsx[0] 分配给鼠标的最后一个位置,以便即使在释放鼠标按钮后也将矩形打印到该坐标。 肯定有一些我不理解的奇怪的 p5*js 语法,因为我对 JavaScript 不是很熟悉。

我已经尝试省略括号,希望 js 将默认为数组中的第一个值,但它没有用,而是变量没有变化。 我在开发过程的早期遇到了类似的问题,在第 26 行我试图将矩形打印到 iconsx[0] 和 iconsy[0]。 当我运行这段代码时,我得到了一个类似的错误,其中 JavaScript 表示存在与在变量名后使用“[”有关的语法错误。 为了解决这个问题,我对变量 iconxbuffer 和 iconybuffer 进行了处理,然后在打印矩形之前使 iconxbuffer 和 iconybuffer 等于 iconsx[0] 和 iconsy[0] 然后让 js 将矩形打印到 iconxbuffer 和 iconybuffer 而不是在那时等于第一个变量我试图打印到。 但我不相信这不会 function 作为我的新问题的可行解决方案,因为我正在尝试为不是从预先存在的变量读取的变量赋值。

好的,所以这里有一些问题。 第一件事是您的代码非常混乱并且缩进不正确。

顶部的所有变量都已定义,因此当您尝试再次定义它们时会出现错误。 例如:

var x = 0;//remember a semicolon at the end of a line of code
let y = 1;

var x = y;//incorrect
let x = y;//incorrect
x=y;//correct

//"let" and "var" are basically the same thing.

您的代码应该如下所示。

var icons = [0];
var iconsx = [10];
var iconsy = [10];
var jog = 0;
var iconxbuffer;
var iconybuffer;

function setup() {
  createCanvas(650, 500);
}

function draw() {
  background(255,199,248);
  
  fill(255,248,184);
  
  rect(175, 435, 300, 55, 45);
  fill(255,38,241)
  
  if (mouseIsPressed === true){
     rect(winMouseX, winMouseY, 45, 55)
     //Also, what is winMouseX? Did you mean mouseX?

     //don't put let or var next to a variable already defined
     iconsx[0] = winMouseX
  }
  
  else{
     iconxbuffer = iconsx[0];
     iconybuffer = iconsy[0]
     rect(iconxbuffer, iconybuffer, 45, 55)}
     console.log (iconsx)
  }
}

//This should not return error. If it does and it says winMouseX not defined than replace it with mouseX and mouseY and it should work

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM