Почему константы не определены при использовании p5.js в режиме экземпляра?

#javascript #p5.js

#javascript #p5.js

Вопрос:

Вероятно, я здесь упускаю что-то очень очевидное. Я могу использовать p5.js в глобальном режиме и без проблем используйте константы для выравнивания текста, например, ПО ЦЕНТРУ.

Вот код глобального режима, в котором он работает нормально:

 function setup() {
  var canvas = createCanvas(720, 400);  
  canvas.parent('main_canvas');
};

function draw() { 
  textSize(32);
  textAlign(CENTER);
  text("word", 50, 50);
};
  

Однако, когда я пытаюсь использовать CENTER в режиме экземпляра, я получаю:

 Uncaught ReferenceError: CENTER is not defined:
  

Вот код режима экземпляра, в котором происходит сбой:

 var s = function (p) {
  p.setup = function() {
    p.createCanvas(720, 400);
  };

  p.draw = function() {
    p.textSize(32);
    p.textAlign(CENTER);
    p.text("word", 50, 50);
  };
};
var myp5 = new p5(s,'main_canvas');
  

Есть идеи о том, чего мне здесь не хватает?

Комментарии:

1. Цель режима экземпляра — сохранить все, что связано с p5.js вне глобального пространства имен даже такие константы, как CENTER , так что это сделано специально.

Ответ №1:

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

Чтобы использовать CENTER переменную, вы должны получить доступ к ней через p переменную.

Другими словами, вам нужно сделать это:

 p.textAlign(p.CENTER);
  

Вам также придется делать это с другими переменными, такими как mouseX и mouseY .

Комментарии:

1. Стыд, который я чувствую сейчас, не знает границ. Спасибо.

2. @e_r Я думаю, вы только что описали 75% всего программирования! :p