使用 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;
}
}