尝试在Phaser中加载.mp3文件时出现异常

时间:2015-03-17 01:13:04

标签: dart phaser-framework

我正在尝试在我的preload()函数中加载very short .mp3 file,如下所示:

game.load.audio('sword', '$assetPath/swordraw.mp3', true);

一旦执行此代码,它就会崩溃并显示错误

Breaking on exception: Invalid arguments(s)

指向Phaser console.warn的{​​{1}}函数中的Loader,如下所示:

fileError

通过DartEditor的调试器我已经看到由于某种原因,fileError(int index) { this._fileList[index]['loaded'] = true; this._fileList[index]['error'] = true; this.onFileError.dispatch([this._fileList[index]['key'], this._fileList[index]]); window.console.warn("Phaser.Loader error loading file: " + this._fileList[index]['key'] + ' from URL ' + this._fileList[index]['url']); this.nextFile(index, false); } (音频文件的URL)在这里被选为null,这就是异常的原因(无法连接。{{ 1}}到一个字符串)但为什么url为null?

我已经检查了显而易见的事情:文件名是正确的,_fileList[10]['url']肯定是正确初始化的,因为在此加载之前所有其他文件(图像)都没有问题。所以这看起来像某种类型的音频文件问题,但我看不出是什么问题。

1 个答案:

答案 0 :(得分:0)

哦,好像我在这里找到了罪犯...... https://github.com/playif/play_phaser/blob/ae6a08e5a6eb159149fac01e5831fd8572223a44/lib/loader/loader.dart#L1447

Loader正在设置有关新添加文件的内容时,如果该文件是音频文件则调用此getAudioUrl ...

getAudioURL(urls) {

//String extension;

if (urls is String) {
  urls = [urls];
}

for (var i = 0; i < urls.length; i++) {
  var url = urls[i];
  //extension = urls[i].toLowerCase();
  //extension = extension.substr((Math.max(0, extension.lastIndexOf(".")) || Infinity) + 1);

  if (this.game.device.canPlayAudio(url.split('.').last)) {
    //return urls[i];
    return url;
  }

}

return null;

}

...正如您可能从上面收集的那样,该方法将返回null,看似设备无法播放所提供的文件类型。那么,Dartium不能播放.mp3s?