Looping Background Music 背景音乐
Bgm类负责管理与应用程序(或游戏)生命周期状态变化有关的背景音乐。
当应用程序暂停、终止或者发送到后台时,Bgm会自动暂停正在播放的音乐曲目。相同的,当程序恢复的时候,Bgm也会恢复背景音乐。手动暂停和恢复也是支持的。
为了使Bgm类正常运行,观察员必须通过以下方式注册:
Flame.bgm.initialize();
重要提示:initialize方法必须在WidgetsBinding类实例已经存在的时候才能被调用。在runApp已经被至少调用一次之后,可以假设这种情况都是正确的。
在背景音乐已经结束,但是还想保持应用/游戏运行的情况下,使用dispose方法去移除观察者。
Flame.bgm.dispose();
为了循环播放背景音乐,运行如下:
import 'package:flame/flame/dart';
Flame.bgm.play('adventure-track.mp3');
或者,如果你更喜欢的话:
import 'package:flame/bgm.dart';
Bgm audio = Bgm();
audio.play('adventure-track.mp3');
注意:Bgm类会一直使用在Flame.audio包中的FlameAudio的静态实例去保存缓存的音乐文件。
你必须有一个合适的文件结构,并添加文件到pubspec.yaml文件,正如Flame音频文档中的解释一样。
缓存音乐文件
以下的方法可以用于使用预加载(和卸载)音乐文件到缓存中。 这些方法只是在Flame.audio中的别名,有相同的名字。
再次提醒,如果你需要更多的信息,请查看Flame音频文档.
Flame.audio.load('adventure-track.mp3');
Flame.audio.loadAll([
'menu.mp3',
'dungeon.mp3',
]);
Flame.audio.clear('adventure-track.mp3');
Flame.bgm.clearAll();
方法
播放
play方法接收一个String变量,是一个指向播放音乐文件的文件名字(遵循Flame Audio文件夹结构要求).
你可以传递额外的可选double参数,volume变量(默认是1.0). 例子:
Flame.bgm.play('bgm/boss-fight/level-382.mp3');
Flame.bgm.play('bgm/world-map.mp3',volume: .25);
暂停
暂停正在播放的背景音乐,使用stop方法.
Flame.bgm.stop();
暂停和恢复
为了手动暂停和恢复背景音乐,你可以使用pause和resume方法。
Flame.bgm 自动处理暂停和恢复正在播放的背景音乐曲目。 手动暂停该功能可防止将焦点重新分配给应用程序/游戏时,应用程序/游戏自动恢复。
Flame.bgm.pause();
Flame.bgm.resume();