class Example extends Phaser.Scene
{
constructor ()
{
super();
this.analyser;
this.dataArray;
this.bufferLength;
}
preload ()
{
this.load.setBaseURL('https://cdn.phaserfiles.com/v385');
this.load.video('robot', 'assets/video/robot-dance.webm');
this.load.audio('tune', 'assets/audio/aquakitty-kittyrock.m4a');
this.load.glsl('bundle', 'assets/shaders/bundle4.glsl.js');
}
create ()
{
const text = this.add.text(10, 10, 'Click to start', { font: '16px Courier', fill: '#00ff00' });
let analyser = this.sound.context.createAnalyser();
this.sound.masterVolumeNode.connect(analyser);
analyser.connect(this.sound.context.destination);
analyser.smoothingTimeConstant = 1;
this.bufferLength = analyser.frequencyBinCount;
this.dataArray = new Uint8Array(this.bufferLength);
this.analyser = analyser;
this.input.once('pointerdown', () => {
text.destroy();
this.sound.play('tune', { loop: true });
this.add.shader('GridBack', 512, 300, 1024, 600);
this.graphics = this.add.graphics();
this.add.video(512, 300, 'robot').play(true);
});
}
update ()
{
if (!this.graphics)
{
return;
}
this.analyser.getByteTimeDomainData(this.dataArray);
this.graphics.clear();
this.graphics.lineStyle(2, 0x00ff00);
this.graphics.beginPath();
var sliceWidth = 1024 / this.bufferLength;
var x = 0;
for (var i = 0; i < this.bufferLength; i++)
{
var v = this.dataArray[i] / 128;
var y = v * 300;
if (i === 0)
{
this.graphics.moveTo(x, y);
}
else
{
this.graphics.lineTo(x, y);
}
x += sliceWidth;
}
this.graphics.lineTo(1024, 300);
this.graphics.stroke();
}
}
const config = {
type: Phaser.AUTO,
width: 1024,
height: 600,
backgroundColor: '#000000',
parent: 'phaser-example',
scene: Example
};
let game = new Phaser.Game(config);
class Example extends Phaser.Scene
{
constructor ()
{
super();
this.analyser;
this.dataArray;
this.bufferLength;
}
preload ()
{
this.load.setBaseURL('https://cdn.phaserfiles.com/v385');
this.load.video('robot', 'assets/video/robot-dance.webm');
this.load.audio('tune', 'assets/audio/aquakitty-kittyrock.m4a');
this.load.glsl('bundle', 'assets/shaders/bundle4.glsl.js');
}
create ()
{
const text = this.add.text(10, 10, 'Click to start', { font: '16px Courier', fill: '#00ff00' });
let analyser = this.sound.context.createAnalyser();
this.sound.masterVolumeNode.connect(analyser);
analyser.connect(this.sound.context.destination);
analyser.smoothingTimeConstant = 1;
this.bufferLength = analyser.frequencyBinCount;
this.dataArray = new Uint8Array(this.bufferLength);
this.analyser = analyser;
this.input.once('pointerdown', () => {
text.destroy();
this.sound.play('tune', { loop: true });
this.add.shader('GridBack', 512, 300, 1024, 600);
this.graphics = this.add.graphics();
this.add.video(512, 300, 'robot').play(true);
});
}
update ()
{
if (!this.graphics)
{
return;
}
this.analyser.getByteTimeDomainData(this.dataArray);
this.graphics.clear();
this.graphics.lineStyle(2, 0x00ff00);
this.graphics.beginPath();
var sliceWidth = 1024 / this.bufferLength;
var x = 0;
for (var i = 0; i < this.bufferLength; i++)
{
var v = this.dataArray[i] / 128;
var y = v * 300;
if (i === 0)
{
this.graphics.moveTo(x, y);
}
else
{
this.graphics.lineTo(x, y);
}
x += sliceWidth;
}
this.graphics.lineTo(1024, 300);
this.graphics.stroke();
}
}
const config = {
type: Phaser.AUTO,
width: 1024,
height: 600,
backgroundColor: '#000000',
parent: 'phaser-example',
scene: Example
};
let game = new Phaser.Game(config);