ArrayIndexOutOfBoundsException Появляется и выделяется «пиксели [loc] = c;» - PullRequest
0 голосов
/ 20 ноября 2019

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

//Non-functioning Code:

PImage ff1;
PImage tumblr_odmqonG4Qv1v6tw5po1_500;

void setup() {
  size(500,281);
  ff1=loadImage("ff1.jpg");
tumblr_odmqonG4Qv1v6tw5po1_500=loadImage("tumblr_odmqonG4Qv1v6tw5po1_500.gif");
}

void draw() {
  background(tumblr_odmqonG4Qv1v6tw5po1_500);
  loadPixels();
  ff1.loadPixels();

  for (int x=0; x < ff1.width; x++ ) {
    for (int y=0; y< ff1.height; y++ ) {
      int loc = x + y*ff1.width;

      float r = red (ff1.pixels[loc]);
      float g = green(ff1.pixels[loc]);
      float b = blue(ff1.pixels[loc]);

      float distance = dist(x, y, mouseX, mouseY);

      float adjustBrightness = map(distance, 0, 50, 8, 0);
      r *= adjustBrightness;
      g *= adjustBrightness;
      b *= adjustBrightness;

      r = constrain(r, 0, 255);
      g = constrain(g, 0, 255);
      b = constrain(b, 0, 255);

      color c = color(r, g, b);
      pixels[loc] = c;
    }
  }

  updatePixels();
}


//Functioning Code:

PImage sunflower;

void setup() {
  size(200, 200);
  sunflower = loadImage( "sunflower.png" );
}

void draw() {
  loadPixels();
  sunflower.loadPixels();

  for (int x = 0; x < sunflower.width; x++ ) {
    for (int y = 0; y < sunflower.height; y++ ) {
      int loc = x + y*sunflower.width;

      float r = red  (sunflower.pixels[loc]);
      float g = green(sunflower.pixels[loc]);
      float b = blue (sunflower.pixels[loc]);

      float distance = dist(x, y, mouseX, mouseY);

      float adjustBrightness = map(distance, 0, 50, 8, 0);
      r *= adjustBrightness;
      g *= adjustBrightness;
      b *= adjustBrightness;

      r = constrain(r, 0, 255);
      g = constrain(g, 0, 255);
      b = constrain(b, 0, 255);

      color c = color(r, g, b);
      pixels[loc] = c;
    }
  }

  updatePixels();
}

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

...