Как скопировать массив загруженных изображений p5.js? [закрыто]Javascript

Форум по Javascript
Ответить
Anonymous
 Как скопировать массив загруженных изображений p5.js? [закрыто]

Сообщение Anonymous »

Я пишу видеоигру на основе javascript, использующую библиотеку p5.js.
Я пытаюсь ускорить загрузку игры, копируя загруженные изображения вместо повторной загрузки одних и тех же.
Есть ли способ скопировать массив загруженных изображений, загруженных из вызова 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,
);
}
}
Есть идеи? Или это невозможно сделать с помощью p5.js?
Спасибо!!

Подробнее здесь: https://stackoverflow.com/questions/799 ... ded-images
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»