cor*_*zza 12 javascript browser audio
为了我的游戏需要,我需要有2D声音.这意味着,发射器应位于2D平面上的某个位置.如何在Javascript中实现此效果?我需要使用特殊的声音格式还是可以控制扬声器的音量?
我想我可以达到每个扬声器有2个音量的程度,但我对如何在Javascript中为同一个声音应用不同音量感到无能为力.
可以在此处找到包含演示的文章.
为了防止链接腐烂,我将引用下面最相关的部分
幸运的是,Web Audio API具有内置的硬件加速定位音频功能,非常简单易用.
核心思想在下面的代码中展示:
PositionSample.prototype.changePosition = function(position) {
// Position coordinates are in normalized canvas coordinates
// with -0.5 < x, y < 0.5
if (position) {
if (!this.isPlaying) {
this.play();
}
var mul = 2;
var x = position.x / this.size.width;
var y = -position.y / this.size.height;
this.panner.setPosition(x * mul, y * mul, -0.5);
} else {
this.stop();
}
};
Run Code Online (Sandbox Code Playgroud)
上面第一个链接中的工作演示的完整源代码可以在这里找到.
Offtopic:我考虑过手工重写引用的文章作为一个定制的答案,但这似乎相对毫无意义,因为这篇文章已经足够清楚了,做双重工作似乎毫无意义
兼容性方面,只有闪存和前面提到的代码的组合才能提供真正的跨浏览器定位/平移音频解决方案(因为某些移动设备上没有闪存).理想情况下,如果可以避免使用音频API,我会建议不要使用音频API,因为规范中的内容不会发生变化,因此可能会破坏您的代码(+这不是不可能在移动设备上以任何方式工作).使用更高级的网络音频api的唯一场景是有意义的,如果你期望在你的游戏中至少再工作6到18个月(因为这可能是实现甚至稳定到可用点所需的时间) .
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |