Может ли кто-нибудь сказать мне, почему я получаю сообщение об ошибке «Невозможно прочитать значение свойства« undefined »? P5. JS - PullRequest
0 голосов
/ 09 июля 2020

Я кодирую приложение для рисования, в котором я использую функции конструктора, мой код - попытаться заставить шестиугольник отображаться как инструмент рисования. Моя проблема в том, что когда я пытался связать его с другой функцией-конструктором, это выдает ошибку

    Hexagon.js:27 Uncaught TypeError: Cannot read property 'value' of undefined
    at HexagonTool.draw (Hexagon.js:27)
    at draw (sketch.js:53)
    at e.d.redraw (p5.min.js:32)
    at e.<anonymous> (p5.min.js:31)

.value () не работает как функция-конструктор? мой код разделен, поэтому все функции конструктора разделены, они связаны с эскизом и файлом html, я могу опубликовать больше кода из других областей, чтобы помочь разобраться, если это необходимо. Код ниже:

function HexagonTool() {
  //set an icon and a name for the object
  this.icon = "assets/shapes.jpg";
  this.name = "shapes";

  var Hexagon;
  var HexagonSize;

  var HexagonSizeSlider;
  var nHexagonSlider;

  function preload() {
    Hexagon = loadImage('assets/Hexagon.png');
  }

  function setup() {
    HexagonSizeSlider = createSlider(5, 60, 20);
    HexagonSizeSlider.parent("#sizeOfHexagonControl");

    nHexagonSlider = createSlider(1, 25, 5);
    nHexagonSlider.parent("#numberOfHexagonsControl");
  }

  this.draw = function() {

    if (mouseIsPressed) {
      for (var i = 0; i < nHexagonSlider.value(); i++) {
        var HexagonSize = HexagonSizeSlider.value();
        var HexagonX = random((mouseX - HexagonSize / 2) - 25, (mouseX - HexagonSize / 2) + 25);
        var HexagonY = random((mouseY - HexagonSize / 2) - 25, (mouseY - HexagonSize / 2) + 25);
        image(Hexagon, HexagonX, HexagonY, HexagonSize,
          HexagonSize);
      }
    }
  }
}

1 Ответ

0 голосов
/ 09 июля 2020

Я смотрю на это, и это после нескольких часов попыток заставить его работать, у меня было две копии предварительной загрузки, и удаление настройки в приведенном выше коде решило это

...