cc.audioEngine.stop()会触发setFinishCallback()回调

使用cc.audioEngine.stop ( ) 会立刻触发setFinishCallback()回调。这样会搞得我音频播放混乱。native端出现这种情况概率很低,不足十分之一。但是浏览器调试出现概率是百分之百。看过一个去年发的2dx帖子,说的也是这种情况,当时团队的建议是改AudioEngine-inl.cpp的源码,但是团队发的问题解决步骤都是英文网页的,排版也乱,看不懂,而且creator和2dx的AudioEngine-inl.cpp文件中的代码好像有点不一样,不知道到怎么改。团队大大们来解答下,最好有清晰的截图

顶!大哥们给点建议啊。

自己挖自己的坟,人工顶起

每日人工顶起

我要顶多少次才会有大大来解答哦

帮你 @dumganhar@Q_Q

希望 cc.audioEngine.stop()会触发setFinishCallback()回调, 感觉这才合理。
但不管怎么样, 总得web跟native表现一样才行。

兄弟,这可不合理啊,我是要在声音播放完之后才执行某些代码,不播放完不执行。如果你是要 在cc.audioEngine.stop()后立刻触发setFinishCallback()回调,那你直接把你要执行的代码语句写在cc.audioEngine.stop()语句后面不就立刻触发了吗?何必写在setFinishCallback()回调里面呢?setFinishCallback()本来设计来判断音效播放完成才执行回调的。

1赞

等cocos解决吧, 看他怎么取舍了。
总得web跟native表现一样才行。

setFinishCallback是应该在音频播放结束后才触发,如果是开发者手动stop,逻辑上触发这个回调说不通。
@visualsj,麻烦看看web版本是否存在这个问题吧。

我记得, 你git上修复过这个问题, 当初你是 手动stop, 也触发回调的。

看错了, 是本来会触发, 你修复成不会触发

https://github.com/cocos2d/cocos2d-x/pull/16491

你是说这个PR么?
我们统一一下吧,手动Stop不应该触发。

这个Pull Request是之前重构android audio的时候,带入的新bug,然后修复的。
AudioEngine设计以来,一直都是stop不触发finish callback,那个PR我只是当个issue去修复了。
当时其他平台,比如ios,android,mac,应该stop都不触发finish的。

web平台需要保存一致性,这个我跟同事说下。

谢谢,再问一下,你们每次修改提交后,是要等下个版本才统一发布吗?我可以提前下载git源码覆盖到creator目录下吗?请给个操作步骤。

可以的,应该替换一个文件就可以了。
@visualsj 会跟进这个问题。

在最新的 1.6 测试版里面已经合并了。
你也可以手动下载 engine 的仓库,在 creator 的配置里面可以手动设置 engine 目录的。