p5. js Сбой сценария с пустой переменной? - PullRequest
0 голосов
/ 06 апреля 2020

Я так близок к завершению сценария, что сражаюсь уже 2 месяца. (p5. js graphi c) Вот моя проблема:

  • У меня есть переменная, которая должна обновляться на основе выпадающего списка.
  • Когда я даю переменная заданное значение, скрипт работает.
  • , когда я оставляю его пустым для обновления функцией прослушивания выпадающего селектора. скрипт выполняется, но с неопределенной переменной.
  • В какой-то момент я теряю значение, установленное функцией обновления, и не могу понять, где и как. Любые указатели, пожалуйста?

Вот ссылка на сборку: https://editor.p5js.org/ekspresyon/sketches/iTnv38kyA

Спасибо за ваше время!

1 Ответ

0 голосов
/ 07 апреля 2020

Интересный проект, мне нравится моделирование частиц / молекул. Самый очевидный вопрос в первую очередь; Почему бы вам просто не установить переменную в начальное значение?

Кажется, это проблема логики c. Путь / поток в вашем коде может быть лучше.

Если вы не установите переменную 'f', это 'undefined'. В настройках вы добавляете молекулы воды и воздуха. Но в конструкторе класса молекулы есть следующее:

this.f = f;
this.speed_x = random(-f,f);
this.speed_y = random(-f,f);

Каким будет случайный (-неопределенный, неопределенный)? Это число не существует.

С текущим кодом вы можете добавлять молекулы, только когда установлена ​​глобальная переменная 'f', что кажется плохой практикой. Вы можете добавить молекулы после установки переменной 'f', использовать начальное значение или обновить эти значения в молекуле после изменения переменной 'f'.

Кроме того, изменения в переменной 'f' никогда не бывают передавая существующие молекулы, вы изменяете только глобальную переменную 'f'.


Другая вещь; Нет необходимости проверять скорость каждого кадра. Только когда значение в выпадающем списке изменяется. Вместо вызова скорости в функции рисования, добавьте это к функции настройки:

var temp = document.getElementById("molshake");
temp.addEventListener('change', speed);

Это добавляет слушателя к событию 'onchange', и когда изменяется dropbox, он вызывает speed ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...