Adds audio support for Flame using the audioplayers package.
flame_audio
This package makes it easy to add audio capabilities to your games, integrating Audioplayers features seamless into your Flame game code.
Add this as a dependency to your Flame game if you want to play background music, ambient sounds, sound effects, etc. For the full documentation, visit flame_audio.
How to use
Add sound files to assets/audio
. Remember to run pub get
after updating pubspec.yaml with:
assets:
- assets/audio
General sounds
Use these built-in methods to play sounds in your Flame game:
import 'package:flame_audio/flame_audio.dart';
// For shorter reused audio clips, like sound effects
FlameAudio.play('explosion.mp3');
// For looping an audio file
FlameAudio.loop('music.mp3');
// For playing a longer audio file
FlameAudio.playLongAudio('music.mp3');
// For looping a longer audio file
FlameAudio.loopLongAudio('music.mp3');
Background music
Start by initializing FlameAudio bgm.
FlameAudio.bgm.initialize();
Remember to call dispose to remove the observer.
FlameAudio.bgm.dispose();
To play a looping background music
import 'package:flame_audio/flame_audio.dart';
// play with optional volume param
FlameAudio.bgm.play('music/world-map.mp3', volume: .25);
To stop background music
FlameAudio.bgm.stop();
To pause and resume background music
FlameAudio.bgm.pause();
FlameAudio.bgm.resume();
Caching
You can pre-load your sounds into the audioCache. This prevents a delay for the first time an audio file is called. The files are cached automatically after the first time.
// cache single track
await FlameAudio.audioCache.load('explosion.mp3');
// cache multiple tracks
await FlameAudio.audioCache.loadAll(['explosion.mp3', 'music.mp3']);
To clear the cache
// clear specific track
FlameAudio.audioCache.clear('explosion.mp3');
// clear whole cache
FlameAudio.audioCache.clearCache();
Audio pool
Use AudioPools if you have extremely quick firing, repetitive or simultaneous sounds. To create an AudioPool:
AudioPool audioPool = await FlameAudio.createPool('explosion.mp3', maxPlayers: 2);
audioPool.start();