我使用SoundManager2在我的网站上播放声音。
现在,我想在每次用户播放声音时发送Google Analytics事件。
SoundManager2的文档说您可以通过设置属性来捕获“on play”事件,但在使用360-ui-player时,这不起作用。
我像这样初始化SoundManager2:
<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源代码中更改了createSound()函数的解决方案,但我希望看到一个解决方案而不更改库。
答案 0 :(得分:5)
今天我在soundmanager2的defaultOptions中设置了我的“onplay”回调类似的问题,当360player播放一首歌时,soundmanager2没有调用它。
我发现360player.js调用soundManager.createSound()
指定自己的“onplay”回调(threeSixtyPlayer.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;
希望这有帮助。
干杯, 马可
答案 1 :(得分:1)
我遇到了同样的问题。我搜索了答案,但似乎没有太多关于360player.js的文档。我想你只需要学习代码。我尝试了Marco的方法,但这对我不起作用。实际上对我有用的东西要简单得多。
threeSixtyPlayer.events.play = function(){
//Do Something here like...
alert('Are you serious?');
}
这应该会给你一个良好的开端。我确信其他事件也可以用这种方式挂钩。