2016-06-01 2 views
1

複数のプレーヤーを経由してアプリケーションのさまざまなインタラクションのポイントを持つサウンドアプリケーション用に集中化されたオーディオオブジェクトを作成するときには、どの方向に進むのがベストかわかりません。Reduxを使用したオーディオユニットの集中化?

いくつかのオプションがあると思います:オーディオオブジェクト(再生、一時停止、負荷など)をインスタンシエートして操作し、プレーヤの状態(トラックが再生中、一時停止中、バッファリング中など)プレーヤーのアクションでオーディオとプレーヤーの状態をインスタンス化して操作します。または、オーディオオブジェクトをreduxフローの外に(例えばlibフォルダ内に)置いて、コンポーネントのメソッドを使用して直接イベントとディスパッチして、プレーヤーの状態をオーディオとインラインで保つようにします。ここで

は、ストア(ないReduxの)オーディオの例だ - https://github.com/gillesdemey/Cumulus/blob/master/app/js/stores/currentTrackStore.js

そして、ここでは、プレーヤーの状態を変更する側の行動に沿って実行している、独立したモジュールとしてである - https://github.com/jhabdas/lumpen-radio/blob/master/src/lib/audio.es6

誰もがいずれかを持っていますベストプラクティスに関する考え方、またはそれにアプローチする方法の提案。

乾杯

答えて

2

は間違いないは、減速機の内部でオーディオ・オブジェクト自体を操作します。レデューサーは純粋であると考えられており、状態の更新を適用することのみを心配しています。

それ以上のものは、ミドルウェアやUIコンポーネントのどちらかに置くのが一般的です。私のReduxアドオンカタログのMiddlewareページには、ステートフルな外部オブジェクトをミドルウェアに入れる例が数多くあります。

+0

お返事ありがとうございます。それが私が減速機について理解していることです。それが私がその道を踏み外さなかった理由です。ミドルウェアは今のところ私のために働いています。どこの場所でオーディオにイベントリスナーを追加するのが最適かわかりません(進行状況など)。サイドノート - 店舗に経過時間のようなものを保存するための取り組みは何ですか?更新のたびにオーディオ1の現在の時刻をディスパッチする。このように、時間を集中管理して簡単にアクセスできます。あまりにもパフォーマンスが重いですか? – pwlarry

関連する問題