Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript SoundManager2 onplay事件配置不工作_Javascript_Audio_Google Analytics_Soundmanager2 - Fatal编程技术网

Javascript SoundManager2 onplay事件配置不工作

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"

我用它在我的网站上播放声音

现在我想在用户每次播放声音时发送一个Google Analytics事件

SoundManager2的文档说明,您可以通过设置属性捕捉“正在播放”事件,但在使用时,这不起作用

我按如下方式初始化SoundManager 2:

<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”回调函数(the
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;
希望这有帮助

干杯,
马可

我也有同样的问题。我搜索了答案,但似乎没有太多关于360player.js的文档。我想你只需要研究一下代码。我试过马可的方法,但那对我不起作用。实际上对我有效的方法要简单得多

threeSixtyPlayer.events.play = function(){ 
    //Do Something here like...
    alert('Are you serious?');
}

这应该给你一个领先的开始。我相信其他活动也可以通过这种方式连接起来。

你有什么收获吗?我自己也有同样的问题。不,还在等待任何富有成效的评论。。。我会尽快更新问题并解决它…谢谢bas。。在soundmanager论坛上看到一些人有相同的问题。共识似乎是编辑360player.js,这似乎很讨厌。@FergalMoran:是的,我也看到了,但我不想更改360player.js,因为在版本升级后,你必须一次又一次地修补它。另外,我刚刚发现事件
play
只触发一次!在歌曲开始播放时。每次暂停播放都会触发事件暂停。但是,如果您希望在用户暂停并继续播放几次时,它能够工作,那么您还必须定义事件
resume
。只需为
播放
事件复制代码块,并将其命名为
恢复