我正在尝试实施SoundManager 2来播放this page上的歌曲片段。 这是我目前的JavaScript代码:
alert('c!');
soundManager.url = 'http://www.transapine.ch/common/soundmanagerv297a-20120513/swf/soundmanager2.swf';
soundManager.flashVersion = 8; // optional: shiny features (default = 8)
soundManager.useFlashBlock = false; // optionally, enable when you're ready to dive in
/*
Example HTML to make sound snippet:
<div>
<a href="http://path.to/soundclip/sclip.mp3" class="sclip hidden"><img src="..." height="x" /></a>
</div>
*/
alert('d!');
soundManager.onready(function() {
alert('e!');
var els = $.Elements.getElementsByClassName('sclip');
var a = url = '';
var clips = new Array();
var masterVolume = 100;
for (var i=0; i<els.length; i++) {
a = els[i];
url = a.href;
clips[i] = soundManager.createSound({
id: "clip" + i,
url: url,
volume: masterVolume
});//clips[i] = soundManager.createSound({
$.Events.add(a, "click", function(e) {
e.preventDefault();
clips[i].play();
});//$.Events.add(el, "click", function() {
$.CSS.removeClass(a, 'hidden');// show the button
}//for (var i=0; i<els.length; i++) {
});//soundManager.onready(function() {
这是HTML页面中调用必要脚本的部分:
<script src="http://assets.momo40k.ch/common/js/$-min.js" type="text/javascript"></script>
<script type="text/javascript">alert('a!'); //these alerts are for debugging</script>
<script src="http://assets.momo40k.ch/common/soundmanagerv297a-20120513/script/soundmanager2-nodebug-jsmin.js" type="text/javascript"></script>
<script type="text/javascript">alert('b!');</script>
<script src="http://assets.momo40k.ch/common/js/soundclips.js" type="text/javascript"></script>
<script type="text/javascript">alert('f!');</script>
注意: $ library是我用来平衡浏览器差异的小型库。
我遇到了几个问题。
在SoundManager的教程中,它说要使用soundManager.url
告诉它所需的SWF文件的位置。无论我给它什么价值,它似乎都忽略了它,因为Firebug给了我以下错误:
NetworkError: 404 Not Found - http://www.transalpine.ch/portale/soundmanager2.swf
所以我尝试将soundmanager2.swf
放在http://www.transalpine.ch/portale/
中,错误消失了,所以我继续看看是否可以让它像这样工作。
注意:我在网站的此部分中设置了基本标记http://www.transalpine.ch/portale/
作为基本网址。
问题2和3同时发生,我只是通过一点一点地调试脚本来设法将它们分开......
之后,什么也没发生。我放在页面上的两个测试按钮没有显示出来($.CSS.removeClass(a, 'hidden');
从元素中删除了类hidden
,有效地显示了它们),所以我开始研究正在执行的内容什么不是我通常的方式:警报!
所以我发现soundclips.js
根本没有执行,然后我发现只要第28-32行(clips[i] = soundManager.createSound({...});
)被注释掉它就可以执行。这令我感到困惑:浏览器甚至没有阅读的内容如何阻止读取整个文件?!
soundManager.onready
不会触发删除了那些行后,我仍然遇到了最后一个问题,但可能是由问题1引起的:事件soundManager.onready
永远不会触发。
有谁知道我的设置有什么问题,是什么导致了所有这些问题? 我猜2和3都来自1,但我真的不明白1也不知道2怎么样...... 谢谢!
答案 0 :(得分:0)
首先,网址应如下所示:
soundManager.url = 'http://www.transapine.ch/common/soundmanagerv297a-20120513/swf/';
其他一切现在应该有所修复。