Phaser3 - Safari 上缺少声音条目
2020-08-05
1396
我在我的项目中使用 [email protected] ,我在 Safari 13.1 上运行游戏时遇到问题。
在我的预加载方法中,我有包含声音数据的 loadConfig 对象:
var data = {
mediaURL: "../../../static/sound/",
dataObjects: [
{ type: "sound", name: "ok", file: "ok.ogg" },
{ type: "sound", name: "wrong", file: "wrong.ogg" },
{ type: "sound", name: "missing", file: "missing.png" },
],
};
loadData(data, this);
辅助函数:
function loadData(data, game) {
data.loadObjects.forEach((element) => {
game.load.audio(element.name, config.mediaURL + element.file);
}
}
在我的创建方法中:
this.sound.add("ok")
When I load the scene I get:
Error: There is no audio asset with key “ok” in the audio cache
initialize — phaser.min.js
add — phaser.min.js
create — culture.js
create — phaser.min.js
在其他浏览器上一切正常,我没有遇到任何问题。
**: this.sound.add("ok")
这不起作用,我在游戏场景条目/数据中拥有文件等的所有路径。但似乎无法在创建方法中添加 - 仅在 Safari 中。
3个回答
Safari 不支持 Ogg Vorbis。
John Harper
2020-08-05
解决方案:Safari 需要有 .mp3 格式的替代方案。Safari 无法处理 .oog 文件。
Dex
2020-08-05
正如其他人在这里所说,Safari 不支持 .ogg 格式 - https://caniuse.com/ogg-vorbis
因此,您应该创建一个替代声音,扩展名为 mp3、m4a 或其他取决于您的研究的内容(我个人使用 m4a)。
为了加载 2 个声音,一个作为备份,在 Phaser 中执行以下操作:
scene.load.audio("ok", ["ok.ogg", "ok.m4a"]);
您可以使用相同的键加载声音数组,成功的声音将会播放。 https://rexrainbow.github.io/phaser3-rex-notes/docs/site/audio/#load-audio-file
虽然您需要稍微更改一下
loadData()
函数以匹配文件数组。
Nicolas Caro
2021-01-27