根据 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.
根据 CHANGELOG,自版本 3.53.0 - Anastasia - 2021 年 3 月 8 日起
SceneManager.loadComplete
will no longer try to unlock the Sound Manager, preventingAudioContext 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.