常见音频处理

播放音频非常简单!

首先在你的pubspec.yaml中添加所有你需要使用的音频文件(确保填写的路径文件已经存在)。

你需要在pubspec.yaml文件中添加类似于:

flutter:
  assets:
    - assets/audio/explosion.mp3
    - assets/audio/music.mp3

最简单的使用方法:

import 'package:flame/flame.dart';

Flame.audio.play('explosion.mp3');
Flame.audio.playLongAudio('music.mp3');

或者这样:

import 'package:flame/flame_audio.dart';

FlameAudio audio = FlameAudio();

audio.play('explosion.mp3'); // Or
audio.playLongAudio('music.mp3');

不同之处在于每个实例共享不同的缓存。 通常,你会使用Flame.audio实例并完全共享缓存。

你的目录结构必须和上方的pubspec.yaml例子保持一致!

你可以用它来播放MP3, OGG或者WAV。

该函数使用了audioplayers库,便于在游戏中同时播放多个声音(游戏中非常重要)。你可以点击链接查看更多详细内容。

要实现循环播放,只需使用loop函数:

Flame.audio.loop('music.mp3'); 
// 或者
Flame.audio.loopLongAudio('music.mp3');

另外,你可以使用Bgm类(通过Flame.bgm调用)来循环播放背景音乐。Bgm类可以让Flame在暂停或继续游戏(项目)时控制背景音乐的暂停与恢复。

play/loopplayLongAudio/loopLongAudio 的区别;

  • play/loop会优化播放效果,允许循环播放但不会在切换时产生间隙,并且不会使游戏帧率下降。尽量使用该函数。
  • playLongAudio/loopLongAudio 允许播放任意长度的音频,但是它们会影响帧率,并且会在循环播放的音频间产生间隔。

你可以预加载音频。首次请求音频时,音频会被存放在内存中。因此,每次播放未加载过的mp3可能会出现延迟。

我们只需这样进行预加载:

Flame.audio.load('explosion.mp3');

你可以在一开始就加载全部的音频,使他们始终播放顺畅

加载多个音频只需:

Flame.audio.loadAll(['explosion.mp3', 'music.mp3'])

最终,你可以通过clear函数来清理缓存中的内容:

Flame.audio.clear('explosion.mp3');

你也可以通过clearAll函数来清理全部的缓存。

比如,你的游戏有多个关卡,且每个关卡的配乐完全不同,你就用得上咯。

这两个函数的返回值都是Future<File>

无论是play还是loop,你都可以传递一个额外的double类型参数,它就是音量(默认为1.0)。

无论是play还是loop,它们都会从audioplayers库中返回一个AudioPlayer实例,该实例允许你停止、暂停和配置其他的东西。

如果你觉得日志太多,可以通过该函数进行屏蔽:

Flame.audio.disableLog();
Flame中文站 all right reserved,powered by Gitbook最后修改: 2020-08-20 17:40:25

results matching ""

    No results matching ""