creator3d (1.0.3,1.0.4)微信小游戏声音播放bug stop和play先后调用无法播放

如题:在做一个微信3d小游戏,要实现一个声音播放中的时候,点击按钮重新播放的功能,代码如下:
private audio:AudioClip;
//private audio:AudioSourceComponent;
onTouch()
{
this.audio.stop();
this.audio.play();
}

AudioClip和AudioSourceComponent都测试了结果一样,点击后停止播放,后来通过this.audio.state查状态,发现调用stop后一段时间内还是处于播放状态中,过大概2帧的样子才设置为stop状态,导致后面的play调用完成后,被设置为stop状态,结果音乐不播放了。这算bug吗?????这种延迟的目的是啥? 求个大神给解答一下,这样导致无法实现重新播放的功能。

我建议你直接使用微信原生的播放和暂停音效的功能试试看。

  if (cc.sys.platform == cc.sys.WECHAT_GAME) {
      var audio = wx.createInnerAudioContext()
      audio.src = audioUrl // src 可以设置 http(s) 的路径,本地文件路径或者代码包文件路径
      audio.play()
    }

具体用法也很简单,直接看一下微信的api就好了。

1赞

我们也是监听微信底层的事件,事件回调本身有延迟,引擎就会晚一点设置状态