2015-03-06 5 views
0

Я получаю сообщение об ошибке ArrayIndexOutOfBounds 8 Я не уверен, почему-мои изображения начинаются с 0. Линейная обработка, кажется, выделяется image(images[ic], gridX, gridY, stepX, stepY); Любая помощь для решения этой проблемы будет действительно полезна. Заранее спасибо!Исключение ArrayIndexOutOfBounds 8 при обработке

import java.util.Calendar; 
PImage[] images = new PImage[8]; 
int ic; 
PImage img; 

void setup(){ 
    size(500, 500); 

    for (int i = 0; i< images.length; i++) 
{ 
images[i] = loadImage(i + ".png"); // make sure images "0.jpg" to "11.jpg" exist 
} 
} 

void draw(){ 
    ic= 0; 
    float tileCountX =10; 
    float tileCountY = 10; 
    float stepX = width/tileCountX; 
    float stepY = height/tileCountY; 
    for (float gridY = 0; gridY < height; gridY += stepY){ 
    for (float gridX = 0; gridX < width; gridX += stepX){ 
      image(images[ic], gridX, gridY, stepX, stepY); 
      ic++; 
    } 
    } 
} 

void keyReleased(){ 
    if (key=='s' || key=='S') saveFrame(timestamp()+"_##.png"); 
} 

// timestamp 
String timestamp() { 
    Calendar now = Calendar.getInstance(); 
    return String.format("%1$ty%1$tm%1$td_%1$tH%1$tM%1$tS", now); 
} 
+1

Просьба заполнить полный образец кода, который, по крайней мере, можно скомпилировать. – CKing

+0

Каковы значения высоты и ширины? индекс ic в функции draw() может увеличиваться выше 7, вызывая исключение. С помощью функции stacktrace и полного кода. –

+0

Ваш комментарий 'make sure images '0.jpg" to "11.jpg" exist' означает, что ваш pImage слишком мал. –

ответ

1

Посмотрите на этот блок кода:

ic= 0; 
    float tileCountX =10; 
    float tileCountY = 10; 
    float stepX = width/tileCountX; 
    float stepY = height/tileCountY; 
    for (float gridY = 0; gridY < height; gridY += stepY){ 
    for (float gridX = 0; gridX < width; gridX += stepX){ 
      image(images[ic], gridX, gridY, stepX, stepY); 
      ic++; 
    } 
    } 

Ваша высота и ширина 500, так что внутренний контур будет выполнять 500 раз. Вы каждый раз увеличиваете количество символов.

Вы используете эту переменную ic для индексации в свой массив, но ваш массив имеет только 8 индексов, а не 500. Именно это вызывает вашу ошибку.

Вам нужно сделать шаг назад и попытаться выяснить, что именно вы пытаетесь сделать, поскольку этот код не имеет смысла.

Смежные вопросы