Мне нужно работать в процессе обработки моего школьного проекта. Поэтому я загружаю изображения в массив, а затем в новый класс у меня есть другой массив, и я помещаю изображения в этот массив каждый раз, когда я создаю этот класс. Каждый раз, когда я создаю этот класс, я помещаю изображения в другое место, и это работает нормально, но как только я пытаюсь настроить масштаб этих изображений, он также корректирует масштаб для изображений в других классах. Я предполагаю, что он меняет масштаб всех этих изображений, потому что он меняет масштаб изображений в моем первом массиве, и я не создаю новый. Есть ли способ обойти это? Это мой код. Это где я загрузить мои изображения:Манипулировать масштаб моих изображений
class ItemLoader
{
PImage[] itemArray;
ArrayList itemCollection;
String itemType;
int amountOfFrames;
int amountOfItems = 1;
ItemLoader()
{
itemCollection = new ArrayList();
LoadImage();
}
void LoadImage()
{
for(int ii = 0; ii < amountOfItems; ii++)
{
AssignItemType(ii);
itemArray = new PImage[amountOfFrames];
for(int i = 0; i < amountOfFrames; i ++)
{
String filenaam = itemType + nf(i, 5) + ".png";
itemArray[i] = loadImage(filenaam);
}
itemCollection.add(itemArray);
}
}
void AssignItemType(int itemNumber)
{
switch(itemNumber)
{
case 0: itemType = "Leaves"; amountOfFrames = 21;
break;
case 1: itemType = "Apple";
break;
case 2: itemType = "Bannana";
break;
case 3: itemType = "Pear";
break;
case 4: itemType = "Cherry";
break;
case 5: itemType = "Owl";
break;
case 6: itemType = "Bird";
break;
}
}
}
Тогда это когда я создаю экземпляр класса:
itemList.add(new ItemSpawn(randomX,randomY,0, strokeThickness,itemLoader.itemCollection));
И это где я петля корыта массива анимировать изображения:
class ItemSpawn
{
PImage[] animationFrames;
PImage lastFrame;
float frameCounter;
int x_loc;
int y_loc;
float ImageScale = 0;
int ImageRotation = 0;
ItemSpawn(int x_loc_par, int y_loc_par, int _itemType, float _strokeSize, ArrayList _tempArray)
{
animationFrames = (PImage[]) _tempArray.get(_itemType);
x_loc = x_loc_par;
y_loc = y_loc_par;
ApplyScaleRotation();
}
void ApplyScaleRotation()
{
ImageScale = 0.5;
ImageRotation = int(random(0,360));
for(int i = 0; i < animationFrames.length; i++)
{
animationFrames[i].resize(int(animationFrames[i].width * ImageScale), int(animationFrames[i].height * ImageScale));
}
}
void LoopAnimation()
{
int convertCount = int(round(frameCounter));
if(convertCount < animationFrames.length - 1)
{
image(animationFrames[convertCount],x_loc - (animationFrames[convertCount].width/2) ,y_loc - (animationFrames[convertCount].height/2));
frameCounter += 0.4;
}else
{
image(animationFrames[animationFrames.length - 1],x_loc - (animationFrames[convertCount].width/2),y_loc - (animationFrames[convertCount].height/2));
}
}
}