[LayaNative 2.0]销毁有声音的spine动画,skeleton中的_onAniSoundStoped有时会报undefined错误

    /**
    *@private
    *清掉播放完成的音频
    *@param force 是否强制删掉所有的声音channel
    */
    __proto._onAniSoundStoped=function(force){
        var _channel;
        for (var len=this._soundChannelArr.length,i=0;i < len;i++){
            _channel=this._soundChannelArr;
            if (_channel.isStopped || force){
                !_channel.isStopped && _channel.stop();
                this._soundChannelArr.splice(i,1);
                len--;i--;
            }
        }
    }
 
 
    /**
    *停止播放
    */
    __proto.stop=function(){
        _super.prototype.stop.call(this);
 
 
    /**
    *停止播放。
    */
    __proto.stop=function(){
        if (this.completeHandler)this.completeHandler.run();
    }
猜测bug原因如下:销毁一个有多个音效在同时播放的Skeleton对象时,上面第一个函数中的__channel.stop();会回调_onAniSoundStoped函数本身,如果这个时候一个音频自动播放完了,另一个线程会把channel的isStoped设为真,回调时就会删除数组中的元素,这样第一次调用时的len和数组长度就不一致了,if (_channel.isStopped || force)中的的_channel就有可能是undefined
已邀请:

要回复问题请先

商务合作
商务合作