Phaser学习笔记

声音

在Phaser中播放一段声音很简单,只需要事先加载好声音资源。然后调用play方法播放就行了。

首先使用 game.load.audio() 来加载声音资源。我们以本游戏中得分时播放的声音为例,在state的preload方法中预先加载声音资源。

//引擎会根据浏览器支持的格式自动播放音频文件
game.load.audio('sfx', [ 'assets/audio/SoundEffects/fx_mixdown.mp3', 'assets/audio/SoundEffects/fx_mixdown.ogg' ]);

 game.load.audio('sfx', 'assets/audio/SoundEffects/fx_mixdown.ogg');

然后通过 game.add.audio() 来得到一个audio对象

this.soundScore =game.add.audio('score_sound');

audio对象有许多方法用来控制声音的播放暂停等,要播放声音,只需要调用它的play方法即可。

语法:
  play(marker, position, volume, loop, forceRestart)
    marker:假如想播放指定的marker,则为marker名字,否则为'' ,表示播放整个声音文件。
    如:
    this.soundScore.play(); //播放声音
    //播放整个声音,从头开始,并重复播放
    this.soundScore.play('',0,1,true);

停止或恢复播放如下:

    soundScore.pause();  //中断播放
    soundScore.resume(); //恢复播放
    soundScore.restart(); //重复开始播放

如果一个音频里有多个Marker,maker的目的是将多个声音绑定到一个大的声音文件。一个marker可以通过指定一个唯一的名字,在音频文件中的开始时间和持续时间来定义。

    语法
    addMarker(name, start, duration, volume, loop)
    start:开始时间,单位秒
    duration:时长,单位秒
    如:
    soundScore.addMarker('alien death', 1, 1.0);
    soundScore.addMarker('boss hit', 3, 0.5);
    soundScore.addMarker('escape', 4, 3.2);
    soundScore.addMarker('meow', 8, 0.5);
    soundScore.addMarker('numkey', 9, 0.1);

执行指定的maker

    语法
    play(marker, position, volume, loop, forceRestart) 
    marker:marker定义的名字
    如:
    soundScore.play('alien death');