0

私は、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 を含めたいのですが、それらを直接呼び出すと上記の警告が表示されます。

4

0 に答える 0