Build games as easily as you play them — join the Phaser Beam waitlist for Early Access.
class Boot extends Phaser.Scene { preload () { this.load.setBaseURL('https://cdn.phaserfiles.com/v385'); this.load.image('flower', 'assets/sprites/flower-exo.png'); } update () { this.scene .run('fpsTest1') .run('fpsTest2') .run('fpsTest3') .run('fpsTest4') .remove(); } } class FpsTest extends Phaser.Scene { graphics; sprite; startFrame; startTime; text; create () { this.startFrame = this.game.getFrame(); this.startTime = this.game.getTime(); this.sprite = this.physics.add.image(100, 225, 'flower').setVelocityX(100); this.graphics = this.add.graphics().fillStyle(0xffff00, 0.5); this.text = this.add.text(20, 20, '', { font: '14px monospace' }); } update () { this.graphics.fillPointShape(this.sprite.body, 1); this.text.setText(` steps per second: ${this.physics.world.fps} steps last frame: ${this.physics.world.stepsLastFrame} sprite.x: ${this.sprite.x.toFixed(3)} sprite.body.deltaX(): ${this.sprite.body.deltaX().toFixed(3)} sprite.body.deltaXFinal(): ${this.sprite.body.deltaXFinal().toFixed(3)} frames elapsed: ${this.game.getFrame() - this.startFrame} time elapsed: ${(this.game.getTime() - this.startTime).toFixed(3)} ms`); if (this.sprite.x >= 300) { this.scene.pause(); } } } const config = { type: Phaser.AUTO, width: 800, height: 600, pixelArt: true, parent: 'phaser-example', physics: { default: 'arcade', arcade: { debug: false } }, scene: [ new Boot({ key: 'boot' }), new FpsTest({ key: 'fpsTest1', physics: { arcade: { fps: 30 } }, cameras: [ { x: 0, y: 0, width: 400, height: 300 } ] }), new FpsTest({ key: 'fpsTest2', physics: { arcade: { fps: 60 } }, cameras: [ { x: 400, y: 0, width: 400, height: 300 } ] }), new FpsTest({ key: 'fpsTest3', physics: { arcade: { fps: 144 } }, cameras: [ { x: 0, y: 300, width: 400, height: 300 } ] }), new FpsTest({ key: 'fpsTest4', physics: { arcade: { fps: 300 } }, cameras: [ { x: 400, y: 300, width: 400, height: 300 } ] }) ] }; const game = new Phaser.Game(config);
class Boot extends Phaser.Scene
{
preload ()
{
this.load.setBaseURL('https://cdn.phaserfiles.com/v385');
this.load.image('flower', 'assets/sprites/flower-exo.png');
}
update ()
{
this.scene
.run('fpsTest1')
.run('fpsTest2')
.run('fpsTest3')
.run('fpsTest4')
.remove();
}
}
class FpsTest extends Phaser.Scene
{
graphics;
sprite;
startFrame;
startTime;
text;
create ()
{
this.startFrame = this.game.getFrame();
this.startTime = this.game.getTime();
this.sprite = this.physics.add.image(100, 225, 'flower').setVelocityX(100);
this.graphics = this.add.graphics().fillStyle(0xffff00, 0.5);
this.text = this.add.text(20, 20, '', { font: '14px monospace' });
}
update ()
{
this.graphics.fillPointShape(this.sprite.body, 1);
this.text.setText(`
steps per second: ${this.physics.world.fps}
steps last frame: ${this.physics.world.stepsLastFrame}
sprite.x: ${this.sprite.x.toFixed(3)}
sprite.body.deltaX(): ${this.sprite.body.deltaX().toFixed(3)}
sprite.body.deltaXFinal(): ${this.sprite.body.deltaXFinal().toFixed(3)}
frames elapsed: ${this.game.getFrame() - this.startFrame}
time elapsed: ${(this.game.getTime() - this.startTime).toFixed(3)} ms`);
if (this.sprite.x >= 300)
{
this.scene.pause();
}
}
}
const config = {
type: Phaser.AUTO,
width: 800,
height: 600,
pixelArt: true,
parent: 'phaser-example',
physics: {
default: 'arcade',
arcade: { debug: false }
},
scene: [
new Boot({
key: 'boot'
}),
new FpsTest({
key: 'fpsTest1',
physics: { arcade: { fps: 30 } },
cameras: [ { x: 0, y: 0, width: 400, height: 300 } ]
}),
new FpsTest({
key: 'fpsTest2',
physics: { arcade: { fps: 60 } },
cameras: [ { x: 400, y: 0, width: 400, height: 300 } ]
}),
new FpsTest({
key: 'fpsTest3',
physics: { arcade: { fps: 144 } },
cameras: [ { x: 0, y: 300, width: 400, height: 300 } ]
}),
new FpsTest({
key: 'fpsTest4',
physics: { arcade: { fps: 300 } },
cameras: [ { x: 400, y: 300, width: 400, height: 300 } ]
})
]
};
const game = new Phaser.Game(config);