#p5.js
Вопрос:
Я пытаюсь загрузить анимацию в режиме предварительной загрузки, используя начальный кадр и конечный кадр, как P5.Ссылка на воспроизведение указывает, и она загружает только первый и последний кадр вместо предварительного заполнения всех кадров между ними. Это не было бы проблемой для анимации с 15 или около того кадрами, но у меня есть несколько с 80 .
function preload() { chargeExplosion = loadAnimation('assets/chargeExplosion/frame0000.png', 'assets/chargeExplosion/frame0081.png'); } function setup() { createCanvas(500, 500) } function draw() { explosion1 = createSprite(width / 2, height / 2, 40, 40); explosion1.addAnimation('boom', chargeExplosion); }
Этот код чрезмерно упрощен, так как у меня более нескольких сотен строк кода, но я убедился, что абсолютно ничто не мешает. Анимация работала нормально, когда я предварительно загружал каждый отдельный кадр по отдельности, я просто действительно не хочу делать это для остальных.
Ответ №1:
- Спрайты в p5.play являются постоянными. Вы хотите создать их во время настройки (или, возможно, в ответ на какое-то событие).
- Чтобы отобразить созданные вами спрайты, вам необходимо вызвать
drawSprites()
let chargeExplosion; let explosion1; function preload() { chargeExplosion = loadAnimation('https://www.paulwheeler.us/files/AnimFrame00.png', 'https://www.paulwheeler.us/files/AnimFrame02.png'); } function setup() { createCanvas(windowWidth, windowHeight); explosion1 = createSprite(width / 2, height / 2, 40, 40); chargeExplosion.frameDelay = 30; explosion1.addAnimation('boom', chargeExplosion); } function draw() { background(220); drawSprites(); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script> <script src="https://www.paulwheeler.us/files/p5.play.js?r=0"></script>