javascript - SoundManager2 onplay 事件配置不起作用

标签 javascript audio google-analytics soundmanager2

我使用 SoundManager2用于在我的网站上播放声音。

现在,我想在每次用户播放声音时发送一个 Google Analytics(分析)事件。

SoundManager2 的文档说您可以通过设置属性来捕获“播放中”事件,但是在使用 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() 函数的解决方案,但我希望看到一个无需更改库本身的解决方案。

最佳答案

今天我在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;

希望这对您有所帮助。

干杯, 马可

关于javascript - SoundManager2 onplay 事件配置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10127009/

相关文章:

google-analytics - 用户删除 API:userDeletionRequests:upsert::deletionRequestTime 字段

javascript - JS : how generate the product array for Google Analytics dataLayer?

javascript - imacros javascript 条件 eval 语句

javascript - 在不将高度设置为自动的情况下获取元素的自动高度

php - 使用bootstrap 3音频播放器,但显示正常的html5输出

ios - AVAudioSession 播放时录音奇怪的问题

google-apps-script - Google Apps 脚本中的范围要求过高

javascript - 如何使用动态变量名调用 Angular 范围?

javascript - PHP jQuery aJax 来自响应和数据

audio - 具有多个输入文件的 ffmpeg 映射