Я создаю игру с фреймворком Phaser 3, и в нем много анимации. В моем коде у меня уже есть анимация, которая воспроизводится (или возобновляется) после воспроизведения любой анимации, и это нормально. Код для него:
//This keeps the rolling animation going once the push animation is done
skater.on('animationcomplete', () => {
skater.anims.play('roll');
});
Но для остальной части игры мне нужно, чтобы после завершения соответствующей анимации выполнялись определенные действия. Есть ли функция, аналогичная приведенной выше, где я могу передать ключ или имя анимации в качестве параметра?
В настоящее время я являюсь тем примером, который я видел на доске обсуждений Phaser 3. Это все в функции create()
.
//Animation key
const shuvKey = 'shuv'
//Shuvit animation
var shuvFrameNames = this.anims.generateFrameNames(
'sheet', {start: 9, end: 12, zeroPad: 4,
prefix: 'shuv/'}
);
this.anims.create({
key: shuvKey, frames: shuvFrameNames, frameRate: 32, repeat: 0
});
skater.once(game.Animations.Events.SPRITE_ANIMATION_KEY_COMPLETE + shuvKey, function(animation, frame) {
score += 3;
}, this);
Но я получаю "Uncaught TypeError: Невозможно прочитать свойство 'Events' of undefined". Я не уверен, что это как-то связано с моей игровой конфигурацией, поэтому я опубликую это ниже.
Конфигурации
//Configurations for the physics engine
var physicsConfig = {
default: 'matter',
matter : {
gravity: {
x: 0,
y: 2.5, // <--This is the only way I could get the skater to roll up the ramp.
},
debug: true //CHANGE THIS TO TRUE TO SEE LINES
}
}
//Variables for height and width
var gameHeight = 750;
var gameWidth = 3000;
//Game configurations
var config = {
type: Phaser.AUTO,
width: 1500, //<-- this is the width of what we will see at one time
height: gameHeight,
physics: physicsConfig,
scene: {
preload: preload,
create: create,
update: update
}
}
/* This variable will be used to make sure the skater
cannot ollie while he is already in the air */
let skaterTouchingGround;
//Start the game
var game = new Phaser.Game(config);
Мне нужно иметь возможность передать функцию, которая выполняетбудет выполнять любое последующее, когда данная анимация завершена, а не только после завершения любой анимации.