Почему Processing.js выдает ошибку о функции, которой нет в моем коде? - PullRequest
0 голосов
/ 11 сентября 2018

Итак, я использую processing.js для создания абстрактной типографии (например, this ), и я нашел чей-то код, который я хотел бы использовать в качестве основы для своего собственного кода. Я попытался скопировать и вставить его в открытую обработку, онлайн-редактор для обработки, и он выдает мне эту ошибку, когда я пытаюсь запустить его: drawing.$ensureContext(...).getImageData is not a function

здесь это код:

PImage hm;
int xstep = 1;
int max_height = 60;
 
void setup() {
  size(600, 400, P3D);
  background(0);
  fill(255);
  textSize(128);
  textAlign(CENTER);
  text("LIGMA", width/2, height/2);
  filter(BLUR, 8);
  hm = get();
}
 
void draw() {
  background(0);
  strokeWeight(2);
  stroke(255);
  float b, z, px, pz;
  translate(width/2, height/2,-20);
  rotateY(map(mouseX,0,width,-PI,PI));
  rotateX(map(mouseY,0,height,-PI,PI));
 
  translate(-width/2, -height/2);
  for (int y = 5; y < height; y+=10) {
    px = -1;
    pz = 0;
    for (int x = 0; x < width; x+=xstep) {
      b = brightnes(hm.get(x,y));
      z = map(b, 0, 200, 0, max_height);
      //stroke(color(b));
      line(px, y, pz, x, y, z);
      px = x;
      pz = z;
    }
  }
}

Нигде в моем коде это drawing.$ensureContext(...).getImageData не найдено. Кто-нибудь может объяснить, почему это происходит и как это исправить?

1 Ответ

0 голосов
/ 11 сентября 2018

проблема может исходить из этой строки кода и контекста P3D:

filter(BLUR, 8);

, поскольку filter() ожидает изображение, PImage объект в обработке, поэтому он не может найти его. Удалите его, и ошибка выйдет.

Посмотрите на эту документацию, в которой написано:

Описание: фильтрует изображение в соответствии с одним из следующих режимов:

filter() использует aImg.loadPixels(), где aImg - изображение, а вот функция loadPixels в ProcessingJS исходный код:

p.loadPixels = function() {
  p.imageData = drawing.$ensureContext().getImageData(0, 0, p.width, p.height);
};

тебе это не напоминает? :)

...