【问题标题】:Phaser3 - Sound entries missing on SafariPhaser3 - Safari 上缺少声音条目
【发布时间】:2020-08-05 14:11:19
【问题描述】:

我在我的项目中使用 phaser@3.24.0,但在 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")

这不起作用,我在游戏场景条目/数据中有我所有的文件路径等。但似乎没有在 create 方法中添加 - 仅在 safari 中。

【问题讨论】:

    标签: javascript safari phaser-framework audiocontext


    【解决方案1】:

    Safari 不支持 Ogg Vorbis。

    【讨论】:

    • 这没有帮助。我在考虑特定于 Safari 的 AudioContext,但这不是问题。在 Chrome 上,我可以在 cache.audio 等下看到声音中的条目,但在 Safari 中看不到。
    • 太糟糕了——抱歉没有帮到你。如果不是 Safari 中的自动播放阻止,也许可以尝试传递给 Phaser.Game() 的配置对象中 disableWebAudio 的两个值?见:rexrainbow.github.io/phaser3-rex-notes/docs/site/audio
    • 我确实尝试了所有这些。问题属于 safari 本身,可能是渲染和加载数据的顺序。与 Chrome 等不同的东西,除了 audiocontext。
    • 也许 Safari 不支持 Ogg Vorbis 而 Chrome 支持?也许尝试将音频文件转换为 MP3?只是在黑暗中开枪!
    • @JohnHarper 我冒昧地根据您的最后评论编辑您的答案,所以我可以投票。
    【解决方案2】:

    解决方案:Safari 需要有一个 .mp3 格式的替代方案。 Safari 无法处理 .oog 文件。

    【讨论】:

    • 听起来约翰帮助你解决了这个问题,所以他可能应该更新他的答案以便你接受它。如果您选择不这样做,则应将其标记为解决方案。
    • @JamesSkemp 好点。我冒昧地编辑了约翰的答案,所以我可以投票。 Dex,请删除您的答案并接受 John 的答案。
    【解决方案3】:

    正如其他人所说,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() 函数以匹配文件数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多