私は、soundmanager2、soundcloud ストリーム、および waveform.js ( http://waveformjs.org/ ) を使用してオーディオ プレーヤーを構築しようとしています。プレーヤー自体は動作していますが、waveform.js のコールバックを独自のコールバック (時刻の更新など) と一緒に実行することは、より困難であることがわかっています。
Waveform.js は、soundmanager2 の whileplaying および whileloading オブジェクトのコールバックを含むオブジェクトを返すメソッドを提供します。これをマージできますが、明らかに自分のコールバックが削除されます。
Waveform.js のコールバック関数を直接呼び出そうとしましたが、
whileplaying: function(){
waveformObj.optionsForSyncedStream().whileplaying;
updateTime();
}
しかし、これは次の行に沿ってエラーを出します
canvas: strokeStyle または fillStyle を文字列、CanvasGradient、または CanvasPattern のいずれでもない値に設定しようとしても無視されました。this.context.fillStyle = this.innerColor;
Waveform.js のメソッド内で生成されます。
これはこれの解決に関係していると推測しているので、.apply を使用してみましたが、役に立ちませんでした。
これを実行するためのアドバイスをいただければ幸いです。
アップデート
soundmanager オブジェクトが作成されると、いくつかのオプションが必要になります。そのうちのいくつかは、次のようなコールバック オプションです。
var opts = {
id: _this.o.latestTrackId,
url: _this.o.latestStream,
autoLoad: true,
autoPlay: autoPlay,
multiShot: false,
onplay: function(){
_this.playing = true;
_this.o.playButton.addClass('playing');
_this.o.playButton.removeClass('paused');
},
onpause: function(){
_this.playing = false;
_this.o.playButton.removeClass('playing');
_this.o.playButton.addClass('paused');
},
onresume: function(){
_this.playing = true;
_this.o.playButton.addClass('playing');
_this.o.playButton.removeClass('paused');
},
onfinish: function(){
},
onstop: function(){
},
onload: function(){
},
whileloading: function(){
_this.updateLoading();
},
whileplaying: function(){
_this.setElapsed();
_this.updatePlayhead();
},
stream: true,
volume: 90
};
波形を更新するために、waveform.js の関数を含めたいのですが、返すメソッドが提供されています。
whileplaying: function(),
whileloading: function()
自分の setElapsed() などに加えて、これらの 2 番目の whileplaying / whileloading を含めたいのですが、それらを直接呼び出すと上記の警告が表示されます。