Доступ к массиву дает неопределенный p5.js

1

это моя вторая попытка в этом вопросе, надеюсь, я могу быть немного более яснее относительно моей проблемы. У меня есть начальная настройка p5.js:

// Setup empty array (I beleive 'position' this is in the global scope?)
let position = []
//p5 setup
function setup(){
  createCanvas(400,400)
  // Simple for loop to create an array of floating random numbers between 5 and 10 using the p5.js random function
  for(let i = 0; i < 10 ; i++){
    let x = random(5,10)
    position.push(x)
  }
}
function draw(){
  background(100)
  text('This is the implementation of random ${random(5,10)',10,10)
}
// Loging position unless I am mistaken, does NOT show the array
console.log(position)
// But trying to access an specific value within the array gives an 'undefined'
console.log(position[1])
// Undefined

Как получить доступ к индивидуальной стоимости?

let position = []

function setup() {
  createCanvas(400, 400);
  for (let i = 0; i < 10; i++) {
    let x = random(5, 10)
    position.push(x)
  }
}
console.log('The position array is ${position}')
console.log('The length of the position array is ${position.length}')
console.log('The second value in the position array is ${position[1]}')

function draw() {
  background(200)
  text('This is the implementation of random ${random(5,10)}',10,10)
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.16/p5.js"></script>
  • 0
    Вы также можете поделиться реализацией random ?
  • 1
    Вы нигде не вызываете setup() . Исправьте свой отступ, и это станет очевидным. У фрагментов есть кнопка «Tidy», которая делает это за вас.
Показать ещё 5 комментариев
Теги:
p5.js

1 ответ

0
Лучший ответ

Пожалуйста, подтвердите порядок выполнения кода. Рассмотрим этот основной пример:

console.log('one');

function setup(){
  console.log('two');
}

function draw(){
  console.log('three');
}

Когда ваш код загружен, это происходит:

  • console.log() первый оператор console.log() и печатается 'one'.
  • Функция setup() определена, но пока не выполняется.
  • Функция draw() определена, но пока не выполняется.
  • Позже setup() функции setup() и draw().

Теперь рассмотрим этот пример, который ближе к тому, что у вас есть:

function setup(){
  console.log('two');
}

console.log('one');

function draw(){
  console.log('three');
}

Когда вы запускаете этот код, происходит следующее:

  • Функция setup() определена, но пока не выполняется.
  • Оператор console.log('one') запускается и печатается 'one'.
  • Функция draw() определена, но пока не выполняется.
  • Позже setup() функции setup() и draw().

Другими словами, код, который вы используете вне функции, выполняется до того, как эти функции будут автоматически вызваны библиотекой P5.js. В вашем случае вы запускаете код, который обращается к массиву, прежде чем добавлять что-либо к нему.

Чтобы устранить проблему, переместите код внутри функции setup(). Это все.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню