我正在编写一个 dhtml 应用程序,用于创建系统的交互式模拟。模拟的数据是从另一个工具生成的,已经有非常大量的遗留数据。
模拟中的某些步骤要求我们播放音频的“画外音”剪辑。我一直无法找到一种简单的方法来跨多个浏览器完成此操作。
Soundmanager2非常接近我所需要的,但它只会播放 mp3 文件,并且遗留数据可能也包含一些 .wav 文件。
有没有人有任何其他可能有帮助的图书馆?
我正在编写一个 dhtml 应用程序,用于创建系统的交互式模拟。模拟的数据是从另一个工具生成的,已经有非常大量的遗留数据。
模拟中的某些步骤要求我们播放音频的“画外音”剪辑。我一直无法找到一种简单的方法来跨多个浏览器完成此操作。
Soundmanager2非常接近我所需要的,但它只会播放 mp3 文件,并且遗留数据可能也包含一些 .wav 文件。
有没有人有任何其他可能有帮助的图书馆?
您必须包含一个像 Real Audio 或 QuickTime 这样的插件来处理 .wav 文件,但这应该可以工作...
//======================================================================
var soundEmbed = null;
//======================================================================
function soundPlay(which)
{
if (!soundEmbed)
{
soundEmbed = document.createElement("embed");
soundEmbed.setAttribute("src", "/snd/"+which+".wav");
soundEmbed.setAttribute("hidden", true);
soundEmbed.setAttribute("autostart", true);
}
else
{
document.body.removeChild(soundEmbed);
soundEmbed.removed = true;
soundEmbed = null;
soundEmbed = document.createElement("embed");
soundEmbed.setAttribute("src", "/snd/"+which+".wav");
soundEmbed.setAttribute("hidden", true);
soundEmbed.setAttribute("autostart", true);
}
soundEmbed.removed = false;
document.body.appendChild(soundEmbed);
}
//======================================================================
如果您使用 Prototype,Scriptaculous 库有一个完善的 API。jQuery似乎也有一个插件。
dacracots 代码是干净的基本 dom,但也许是不假思索地编写的?当然,您首先检查早期嵌入的存在,然后保存重复的嵌入创建行。
var soundEmbed = null;
//=====================================================================
function soundPlay(which)
{
if (soundEmbed)
document.body.removeChild(soundEmbed);
soundEmbed = document.createElement("embed");
soundEmbed.setAttribute("src", "/snd/"+which+".wav");
soundEmbed.setAttribute("hidden", true);
soundEmbed.setAttribute("autostart", true);
document.body.appendChild(soundEmbed);
}
在扫描类似情况的解决方案时,在这里遇到了这些想法。不幸的是,我的浏览器 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102814 Ubuntu/8.04 (hardy) Firefox/3.0.15 在尝试这个时死掉了。
安装最新更新后,firefox 仍然崩溃,opera 保持活动状态。
我相信最简单和最方便的方法是使用小的 Flash 剪辑播放声音。我很欣赏这不是 JavaScript 解决方案,但它是实现目标的最简单方法
上一个类似问题的一些额外链接:
您可以使用 HTML5<audio>
标记。