2

Web サイトでサウンドを再生するためにSoundManager2を使用しています。

ここで、ユーザーがサウンドを再生するたびに Google アナリティクス イベントを送信したいと考えています。

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() 関数が変更されたソリューションについて読みましたが、ライブラリ自体を変更しないソリューションを見たいと思っています。

4

2 に答える 2

5

今日、360player が曲を再生したときに、soundmanager2 によって呼び出されなかった、soundmanager2 の defaultOptions に設定された「onplay」コールバックで同様の問題が発生しました。

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;

お役に立てれば。

乾杯、マルコ

于 2012-07-11T22:28:09.053 に答える
1

私も同じ問題を抱えていました。答えを探しましたが、360player.jsに関するドキュメントはほとんどないようです。コードを勉強するだけだと思います。マルコの方法を試しましたが、うまくいきませんでした。実際に私のために働いたことははるかに簡単でした。

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

これはあなたに有利なスタートを与えるはずです。他のイベントもこの方法でフックできると確信しています。

于 2012-07-17T13:38:32.340 に答える