在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');