【发布时间】:2022-01-21 10:13:59
【问题描述】:
使用 Flame 和 Flame Audio,我无法解决问题。 FlameAudio 返回的 AudioPlayer 上的 stop 函数不会停止循环播放。我不确定这是我的代码问题、AudioPlayer 问题还是 FlameAudio 问题。
下面是在开始时启动声音的一段代码,应该在结束时停止或取消。使用单个指针拖动它可以工作。但是,当使用带有多个指针的 multidrag 并同时释放所有声音时,声音会继续播放。当至少有一次拖动处于活动状态时,代码应该只播放一种声音。
谁能告诉我,如果我做错了什么或者有错误。 https://github.com/markohrastovec/flame_audio_test 提供了在我的手机上显示问题的最小工作示例。
@override
void onDragStart(int pointerId, DragStartInfo info) async {
if (loopPlayer == null && activeDrag.isEmpty) {
loopPlayer = await FlameAudio.audioCache.loop('sfx/flame.mp3');
}
activeDrag.add(pointerId);
}
@override
void onDragEnd(int pointerId, DragEndInfo info) async {
activeDrag.remove(pointerId);
if (loopPlayer != null && activeDrag.isEmpty) {
int result = await loopPlayer!.stop();
loopPlayer = null;
}
}
@override
void onDragCancel(int pointerId) async {
activeDrag.remove(pointerId);
if (loopPlayer != null && activeDrag.isEmpty) {
int result = await loopPlayer!.stop();
loopPlayer = null;
}
}
【问题讨论】: