Как я могу использовать имя файла изображения в различных переменных в Java? - PullRequest
0 голосов
/ 06 июля 2019

Мой код загружает и рисует изображения на экране. Каждое изображение имеет четырехзначное имя, например, 0102.png. Первые две цифры (01) определяют номер изображения, а две другие (02) определяют длительность отображения изображения.

Как я могу получить имена файлов изображений и использовать их в цикле и в других переменных?

import processing.serial.*;

Serial myPort; 
int n, dataIn;
int maxImages = 5;
int imageIndex = 0; 
PrintWriter output;
int i, j, k;
int a = 20;
String s, p;

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

    output = createWriter("a.txt");
    myPort = new Serial(this, "COM6", 38400);

    PImage[] images = new PImage[maxImages];     

    for (j = 0; j < images.length; j++) 
    {
        images[j] = loadImage(j + ".png");
        frameRate(1);
        images[j].loadPixels();
        imageIndex = (imageIndex + 1) % images.length;     
    }
}

void draw()
{
    function();
    //image(images[j], 0, 0);  
}

1 Ответ

2 голосов
/ 06 июля 2019

Ответ: «Да, если вы храните эту информацию где-то (или извлекаете ее каждый раз, когда вам это нужно)». Хотя это может быть намного проще: вместо массива PImage у вас может быть массив созданного вами класса, который будет содержать всю необходимую вам информацию, примерно так:

class MyImage {
  protected PImage _image;
  protected PVector _size, _location;
  protected int _imageNumber;
  protected int _loopingTime;

  public MyImage(String imagePath, int imageNumber, int loopingTime, PVector location) {
    _image = loadImage(imagePath);
    _size = new PVector(_image.width, _image.height);
    _location = location;
    _imageNumber = imageNumber;
    _loopingTime = loopingTime;
  }

  public void SetImageLocation(int xx, int yy) {SetImageLocation(new PVector(xx, yy));}
  public void SetImageLocation(PVector v) {_location = v;}
  public int GetImageNumber() {return _imageNumber;}
  public int GetLoopingTime() {return _loopingTime;}
  public PVector GetSize() {return _size;}
  public PVector GetLocation() {return _location;}

  public void DrawImage(){
    image(_image, _location.x, _location.y, _size.x, _size.y);
  }
}

И позже в вашем коде вы можете инициализировать массив этого класса вместо массива PImage! Конечно, я разработал это быстро, так что вы бы хорошо обогатили его всем, что вам нужно.

Я останусь рядом, если у вас возникнут вопросы. Веселись!

...