gpt4 book ai didi

dart - 尝试在Phaser中加载.mp3文件时发生异常

转载 作者:行者123 更新时间:2023-12-03 04:05:57 26 4
gpt4 key购买 nike

我试图像这样在我的preload()函数中加载very short .mp3 file:

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

该代码一旦执行,就会因错误而崩溃

Breaking on exception: Invalid arguments(s)

指向Phaser的 console.warnLoader函数中的 fileError,如下所示:

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);

}

通过DartEditor的调试器,我已经看到出于某种原因 _fileList[10]['url'](音频文件的URL)在此处被选为null,这是导致异常的原因(无法将 null链接为字符串),但是为什么是url空值?

我已经检查了明显的一点:文件名正确并且 assetPath当然正确初始化了,因为在此加载之前,所有其他文件(即图像)都可以正常工作。因此,这似乎是某种音频文件问题,但我看不出问题所在。

最佳答案

哦,好像我在这里找到了罪犯... 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吗?

关于dart - 尝试在Phaser中加载.mp3文件时发生异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29089725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com