1.3.2播放音效问题和崩溃的问题

项目使用1.2.2开发的,目前运行正常,尝试升级到1.3.2后发现播放音效时破音很严重(在Mac模拟器)引擎会自己的打印一堆log,如下:
Simulator: V/AudioPlayer (128): Before alSourceStop
Simulator: V/AudioPlayer (130): Before alSourcei
Simulator: V/AudioPlayer (136): AudioPlayer::destroy end, id=50
Simulator: V/AudioPlayer (147): AudioPlayer::play2d, _alSource: 2401
Simulator: V/AudioPlayer (69): ~AudioPlayer() (0x7fe940d2f800), id=51
Simulator: V/AudioPlayer (83): AudioPlayer::destroy begin, id=51
Simulator: V/AudioPlayer (128): Before alSourceStop
Simulator: V/AudioPlayer (130): Before alSourcei
Simulator: V/AudioPlayer (136): AudioPlayer::destroy end, id=51
Simulator: V/AudioPlayer (147): AudioPlayer::play2d, _alSource: 2401
,而且会有偶发性的崩溃,崩溃截图如下:

mac上播放声音本身的逻辑一直没有改过,不至于升级到1.3.2才出现破音。
是每个音频文件都会破音么?如果是某个音频破音,请上传一下。

崩溃问题,感觉是Spine绑定的问题,需要@panda看看

崩溃问题好像是因为使用了spine的setAnimationEvent方法,改了之后暂时没有再崩溃。音效破音现象是所有的音效都有,而且不是必然的破,反复播放容易出现,我还保留有1.2.2的分支,全部正常没有破音现象,1.3.2就破音,长的背景音乐没出现这个问题,会不会是因为反复播放同一个音效引起的?

麻烦提交一个重现破音的音频,我这试试。

1.2.2是使用SimpleAudioEngine播放声音。
1.3.2改用AudioEngine播放声音。
虽然都是用OpenAL,但是播放机制有些许不同。破音是在Mac模拟器上么?在ios设备上是否也会出现?
麻烦提交一下会破音的音效吧。

刚更新了mac系统和xcode到最新版,仍然爆音严重,所有的音效都爆音,都发生在音效播放完毕结束的瞬间会有刺啦刺啦的声音。目前在creator的模拟器和xcode的模拟器都会出现,真机暂时没发现。

尝试使用 https://github.com/cocos-creator/cocos2d-x-lite 的v1.3分支试试还会出现爆音么?

我昨天发的贴,问题和这个一样,也是使用了spine出现crash的问题。并且爆音问题我也遇到了,手机上会爆,模拟器上不会1.mp3.zip (693.2 KB)

我在mac平台上试了这个音效,并没有发现有爆音问题啊。

你的爆音也是在音频播放结束么?还是播放过程中也会出现?

@stevety, 手机是什么型号?

spine 别使用setAnimationListener,改使用setEndListener和setStartListener等,并且在移除节点前把listener设置成null就不会崩溃了,我这暂时这样弄的。

好的,我试试。谢谢

iphone6

我这里还是没法重现出来,能否录制一段爆音的视频?

wheel_roll.mp3.zip (1.6 KB)
这只是破音的其中一个音效,你可以写个schedule,反复播放就会出现破音现象。而且昨天突然发现1.3.2的编辑器在自定义外部引擎后再次切换回来使用内置引擎会报错提示找不到模拟器,但内置引擎压根没动过,里面明明有模拟器,选择模拟器那个路径也是灰色的不可设置。删除重新安全才正常。

schedule设置多少值?是否可以提供一些你使用的代码片段?

而且昨天突然发现1.3.2的编辑器在自定义外部引擎后再次切换回来使用内置引擎会报错提示找不到模拟器,但内置引擎压根没动过,里面明明有模拟器,选择模拟器那个路径也是灰色的不可设置。删除重新安全才正常

这个能否截图给我看看? 还有 内置引擎 模拟器中的 simulator/win32/config.json 是否有数据?

我搞了个schedule去测试,还真听不出来。。。

    schedule([](float dt){
        AudioEngine::play2d("fonts/wheel_roll.mp3");
    }, 0.1f, "test");

你这是c++代码吧?我是js直接调用cc.audioEngine.play()进行播放的,等会我给你传个录屏