开发者问题收集

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