Javascript SoundManager2 onplay事件配置不工作
我用它在我的网站上播放声音 现在我想在用户每次播放声音时发送一个Google Analytics事件 SoundManager2的文档说明,您可以通过设置属性捕捉“正在播放”事件,但在使用时,这不起作用 我按如下方式初始化SoundManager 2:Javascript SoundManager2 onplay事件配置不工作,javascript,audio,google-analytics,soundmanager2,Javascript,Audio,Google Analytics,Soundmanager2,我用它在我的网站上播放声音 现在我想在用户每次播放声音时发送一个Google Analytics事件 SoundManager2的文档说明,您可以通过设置属性捕捉“正在播放”事件,但在使用时,这不起作用 我按如下方式初始化SoundManager 2: <link rel="stylesheet" type="text/css" href="/app/sm/360/360player.css" /> <link rel="stylesheet" type="text/css"
<link rel="stylesheet" type="text/css" href="/app/sm/360/360player.css" />
<link rel="stylesheet" type="text/css" href="/app/sm/flashblock.css" />
<script src="/app/sm/360/berniecode-animator.js" type="text/javascript"></script>
<script src="/app/sm/soundmanager2-nodebug-jsmin.js" type="text/javascript"></script>
<script src="/app/sm/360/360player.js" type="text/javascript"></script>
<script type="text/javascript">
soundManager.url = '/app/sm/swf/';
threeSixtyPlayer.config = {
playNext: false,
autoPlay: false,
allowMultiple: false,
loadRingColor: '#ccc',
playRingColor: '#AB3C2E',
backgroundRingColor: '#eee',
animDuration: 500,
onplay: function() {
alert('Playing!'); // DOES NOT WORK!
},
animTransition: Animator.tx.veryBouncy
}
</script>
soundManager.url='/app/sm/swf/';
threeSixtyPlayer.config={
playNext:错误,
自动播放:错误,
allowMultiple:false,
loadRingColor:“#ccc”,
播放颜色:“#AB3C2E”,
背景颜色:“#eee”,
持续时间:500,
onplay:function(){
警报('Playing!');//不起作用!
},
animTransition:Animator.tx.veryBouncy
}
有人对此有有效的解决方案吗?
我读到一些解决方案,人们在SoundManager源代码中更改了createSound()函数,但我希望看到一个不更改库的解决方案。今天,我在soundmanager2的defaultOptions中设置的“onplay”回调也有类似的问题,当360播放器播放歌曲时,soundmanager2没有调用它 我发现360player.js调用了
soundManager.createSound()
并指定了自己的“onplay”回调函数(thethreeSixtyPlayer.events.play()
函数),从而覆盖了我的默认回调
另外,请注意:对于我看到的内容,没有要设置的threeSixtyPlayer.config.onplay
属性
非侵入性解决方案应该是封装回调,类似于:
var onplay360 = threeSixtyPlayer.events.play;
var myOnplay = function(){
... your stuff... ;
onplay360.apply(this); // forces the scope to 'this' = the sound object
};
threeSixtyPlayer.events.play = myOnplay;
希望这有帮助
干杯,
马可我也有同样的问题。我搜索了答案,但似乎没有太多关于360player.js的文档。我想你只需要研究一下代码。我试过马可的方法,但那对我不起作用。实际上对我有效的方法要简单得多
threeSixtyPlayer.events.play = function(){
//Do Something here like...
alert('Are you serious?');
}
这应该给你一个领先的开始。我相信其他活动也可以通过这种方式连接起来。你有什么收获吗?我自己也有同样的问题。不,还在等待任何富有成效的评论。。。我会尽快更新问题并解决它…谢谢bas。。在soundmanager论坛上看到一些人有相同的问题。共识似乎是编辑360player.js,这似乎很讨厌。@FergalMoran:是的,我也看到了,但我不想更改360player.js,因为在版本升级后,你必须一次又一次地修补它。另外,我刚刚发现事件
play
只触发一次!在歌曲开始播放时。每次暂停播放都会触发事件暂停。但是,如果您希望在用户暂停并继续播放几次时,它能够工作,那么您还必须定义事件resume
。只需为播放
事件复制代码块,并将其命名为恢复
。