根据 CHANGELOG,由于版本 3.53.0 phaser3 阻止了“AudioContext was not allowed”警告,但我仍然遇到它,我该怎么办?

Per CHANGELOG, since Version 3.53.0 phaser3 is preventing `AudioContext was not allowed` warnings, but I still encounter it, how do I do?

根据 CHANGELOG,自版本 3.53.0 - Anastasia - 2021 年 3 月 8 日起

SceneManager.loadComplete will no longer try to unlock the Sound Manager, preventing AudioContext was not allowed to start console warnings after each Scene finishes loading.

但是,每次我在 Chrome 96.0.4664.110(正式版)(x86_64)

上 运行 一个 phaser3 应用程序

var game = new Phaser.Game();
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>

我仍然收到那个烦人的警告。

我是不是漏掉了什么?

问题是,这是一个浏览器“问题”(看这个 link,以 chromium 为例:https://bugs.chromium.org/p/chromium/issues/detail?id=943258#c6
如果您在没有用户交互的情况下创建 AudioContext,浏览器将输出此警告。 Phaser 在创建 Phaser 游戏对象 new Phaser.Game(...);.

时创建 AudioContext

如果你想摆脱警告消息,我有两种不同的想法,你可以怎么做:

选项 1:
制作一个简单的 html 页面,开头为 button/image/... 并仅在用户迭代后创建 Phaser.Game 对象,这样就不会出现警告。 (这是“更干净的”,有点开销)

let button = document.querySelector('#btnStart');

button.addEventListener('click', () => {
    var game = new Phaser.Game();
});
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>
<button id="btnStart"> Start </button>

选项 2:
或者您可以在创建对象后使用 console.clear(); 清除控制台。 (轻松快速修复)

var game = new Phaser.Game();
console.clear();
<script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>

Just so that you know the Warning has no effect, a can be ignored.