Audiosource改变clip后的第一次播放无效

如我在 (省略)/project/assets/resources/audio 下有01.mp3,02.mp3,以及03.mp3三个音频文件
我创建两个audiosource组件,分别叫track1,track2,默认下track1的clip指向01.mp3,track2的clip指向02.mp3,

       cc.log((省略).track1.clip);//"(省略)/project/assets/resources/audio/01.mp3"
       cc.log((省略).track2.clip);//"(省略)/project/assets/resources/audio/02.mp3"

用button点击事件触发音频的重新加载和播放

//button.js
onLoad: function (){
        this.node.on('mousedown', function (event) {
            this._loadAudio();
            this._play();
        }, this);
},

重新加载:

//button.js
_loadAudio: function () {
       (省略).track1.clip = "(省略)/project/assets/resources/audio/03.mp3";//从01.mp3变成02.mp3
       (省略).track2.clip = "(省略)/project/assets/resources/audio/02.mp3";//02.mp3,没有改变
},

播放:

 _play: function(){
         (省略).track1.play();
         (省略).track2.play();
},

点击button,此时只有track2发出了声音,track1没有声音
再次点击button,这次两个track都发出声音了…
这个问题只要一改变clip就会稳定出现
我尝试过这些方法:

  • loadAudio后延时几秒再play,没有效果
  • 多次调用_loadAudio或者_play,没有效果
  • 在play之前stop一下,没有效果
  • 多次play, stop,没有效果,依然要在下次按下button后track正常,这我很想不通…我复制了按按钮的过程啊,现在按一次按钮程序相当于执行两次,但是却和按两次按钮的情况不一样…太诡异了:sweat:

改用audioengine,问题解决了:sweat:

能不能提交一个有问题的 demo?

做了个demo却发现这个bug没出现:disappointed_relieved:但之前的项目里的确出现了这样的问题啊…真奇怪

今天又出现了类似的问题…然后发现可能是javascript回调函数异步导致的…解决办法是提前加载资源orz