Я пытаюсь ускорить загрузку игры, копируя загруженные изображения вместо повторной загрузки одних и тех же.
Есть ли способ скопировать массив загруженных изображений, загруженных из вызова API loadImage?
После их копирования я хочу перекрасить их. Я делаю это, и и оригинал, и копия перекрашиваются.
Это вызов API p5.js, при копировании которого у меня возникают проблемы, независимо от того, используете ли вы схемы поверхностного или глубокого копирования: loadImage(URL). Я даже попробовал JavaScript StructuredClone и получил ошибку, что массив не может быть клонирован. Это правда?
В качестве примера того, чего я стараюсь избегать:
Код: Выделить всё
computer_greenCar_images[13] = loadImage('carImages P5 Origin/Car292.png');
computer_greenCar_images[14] = loadImage('carImages P5 Origin/Car315.png');
computer_greenCar_images[15] = loadImage('carImages P5 Origin/Car337.png');
Код: Выделить всё
computer_orangeCar_images[13] = loadImage('carImages P5 Origin/Car292.png');
computer_orangeCar_images[14] = loadImage('carImages P5 Origin/Car315.png');
computer_orangeCar_images[15] = loadImage('carImages P5 Origin/Car337.png');
Код: Выделить всё
computer_purpleCar_images[13] = loadImage('carImages P5 Origin/Car292.png');
computer_purpleCar_images[14] = loadImage('carImages P5 Origin/Car315.png');
computer_purpleCar_images[15] = loadImage('carImages P5 Origin/Car337.png');
Код: Выделить всё
for (let i = 0; i < computer_greenCar_images.length; i++) {
// Use the .get() method (which returns a new p5.Image object) to create a copy
let imgCopy = computer_greenCar_images[i].get();
computer_orangeCar_images[i] = imgCopy;
Код: Выделить всё
function UTL_copy_green_to_orange() {
for (let i = 0; i < computer_greenCar_images.length; i++) {
computer_orangeCar_images[i] = createImage(
computer_greenCar_images[i].width,
computer_greenCar_images[i].height,
);
computer_orangeCar_images[i].copy(
computer_greenCar_images[i],
0,
0,
computer_greenCar_images[i].width,
computer_greenCar_images[i].height,
0,
0,
computer_orangeCar_images[i].width,
computer_orangeCar_images[i].height,
);
}
}
Спасибо!!
Подробнее здесь: https://stackoverflow.com/questions/799 ... ded-images
Мобильная версия