Javascript 使用电容器为iOS构建时,Phaser 3应用程序中没有声音
我已经创建了一个简单的测试应用程序(在Typescript中,使用Javascript 使用电容器为iOS构建时,Phaser 3应用程序中没有声音,javascript,ios,typescript,phaser-framework,capacitor,Javascript,Ios,Typescript,Phaser Framework,Capacitor,我已经创建了一个简单的测试应用程序(在Typescript中,使用rollup来传输),并正在使用它将其转换为Mac上的iOS应用程序 这是应用程序的相关部分: function preload () { this.load.audio('boom', ['boom.mp3', 'boom.ogg', './boom-44100.ogg', './boom-44100.mp3']); this.load.image('wizball', './wizball.png'); }
rollup
来传输),并正在使用它将其转换为Mac上的iOS应用程序
这是应用程序的相关部分:
function preload () {
this.load.audio('boom', ['boom.mp3', 'boom.ogg', './boom-44100.ogg', './boom-44100.mp3']);
this.load.image('wizball', './wizball.png');
}
function create () {
const image = this.add.image(400, 300, 'wizball').setInteractive();;
this.boom = this.sound.add('boom');
image.on('pointerup', () => {
this.boom.play();
});
}
该应用程序会显示一张照片,如果你点击它,你会听到“砰”的一声
当我运行它时:
- 使用
,使用http://localhost:10001 在Mac上的浏览器中,它工作正常李>npm运行监视
- 在我的Mac电脑上,通过在浏览器的
dir中加载dist/
,它可以正常工作李>index.html
- 通过在我的Mac或iPad上加载,它可以正常工作李>
- 但是,当我使用电容器在Xcode中构建iOS应用程序时,点击图像根本不会发出声音
npm i
npm run watch
npx cap add ios
npx cap copy ios
npx cap open ios
Xcode中的控制台日志显示以下错误:
Error: There is no audio asset with key "boom" in the audio cache
⚡️ URL: capacitor://localhost/game.js
我觉得这很奇怪,因为可以很好地找到图像资产。在ios/App/public/
dir中,同时存在boom.mp3
和wizball.png
我把完整的代码和复制的步骤放在这里:你需要安装node 10+和Xcode(至少配置了一个虚拟设备)来构建iOS应用程序
我忽略了什么?在游戏配置中禁用网络音频,添加到游戏配置的底部,如下所示
let game = new Phaser.Game({
...
audio: {
disableWebAudio: true
}
});
警告:
- 禁用web音频将使phaser使用html5音频
- 使用html5音频 而不是网络音频将使您的游戏滞后
我也有同样的问题。我发现只有在ios平台上,phaser loader才能解析声音负载上的ArrayBuffer。这就是为什么我用简单的fetch加载音频,并用scene.sound.decodeAudio添加到phaser。 诸如此类:
fetch(sound.url)
.then((response) => response.arrayBuffer())
.then((response) => {
scene.sound.decodeAudio({
data: response,
key: 'audioKey',
});
});
有意思,你介意分享你的客户加载器吗?添加到原始答案中非常感谢!您是否为此创建了自定义多文件加载程序,该加载程序可以在预加载期间作为正常过程的一部分运行?