Brightcove Playerサンプル:カスタムイベントで巻き戻しをトリガーする
概要
Brightcove Player にはすぐに使用できるイベントが数多く提供されていますが、独自のカスタムイベントを使用して DOM オブジェクトとイベントリスナー間の依存関係を分離し、排除することができます。このイベント駆動モデルは、アーキテクチャ上の選択肢として、考慮する必要があります。
この例では、コントロールバーに [戻る] ボタンを追加します。ユーザーが [戻る] ボタンをクリックすると、巻き戻しの時間とともにカスタムイベントがトリガーされます。カスタムイベントリスナーは、現在のビデオ位置を検出し、ビデオを巻き戻します。
プレーヤーの例
ビデオの再生を開始します。次に、[戻る] ボタンをクリックします。
ビデオの再生が5秒戻るのがわかります。
ペンを見る18150-トリガー-巻き戻し-カスタム-イベント Brightcove Learning Services( @ bcls1969) オンCodePen。
ソースコード
CodePen を使用する
上記のCodePenを効果的に使用するためのヒントは次のとおりです。
- [ 結果]ボタンをクリックして、プレーヤーの実際の表示を切り替えます。
- HTML/CSS/JSボタンをクリックして、いずれかのコードタイプを表示します。
- このドキュメントの後半では、アプリケーションで使用されるロジック、フロー、およびスタイル設定については、 Player/HTML設定、アプリケーションフロー、およびアプリケーションのスタイル設定で説明されます。セクション。これらのセクションの情報に沿って従う最も良い方法は、次のとおりです。
- CodePen の [ EDIT ON CODEPEN]ボタンをクリックし、1 つのブラウザ/ブラウザタブでコードを使用できるようにします。
- CodePen で、表示するコードを調整します。CodePen 内の異なるコードセクションの幅を変更できます。
- を見るプレーヤー/ HTML構成、アプリケーションフローおよび/またはアプリケーションのスタイリング別のブラウザ/ブラウザタブのセクション。これで、コードの説明に従い、同時にコードを表示できるようになります。
開発シーケンス
推奨される開発順序は次のとおりです。
- インページ埋め込みプレーヤーの実装を使用して、プレーヤー、プラグイン、CSS の機能をテストします (CSS が必要な場合)
- ローカルテストのためにプラグインのJavaScriptとCSSを別々のファイルに置く
- エラーを解決したら、プラグインコードとCSSをサーバーにデプロイします
- Studio を使用してプラグインと CSS をプレイヤーに追加する
- iframe の実装が適切であると判断した場合は、インページ埋め込みプレーヤーの実装を置き換えます (次のセクションで詳しく説明します)。
これらの手順の詳細については、「ステップバイステップ」を参照してください。プラグイン開発ガイド。
iframe またはページ内埋め込み
Brightcove Player の拡張機能を開発する際には、コードが iframe 実装またはページ内埋め込み実装に最も適しているかどうかを判断する必要があります。ベストプラクティスの推奨事項は、iframe 実装で使用するプラグインを構築することです。iframe プレーヤーを使用する利点は次のとおりです。
- 既存のJavaScriptおよび/またはCSSとの衝突はありません
- 自動応答性
- iframe は、ソーシャルメディアアプリ(または動画が他のアプリに「移動」する必要があるとき)での使用を容易にします。
インページ埋め込みプレーヤーの統合はより複雑になりますが、その実装に関するコードを計画する場合もあります。一般化するために、このアプローチは、包含ページがプレイヤーと通信する必要がある場合に最適です。具体的には、いくつかの例を挙げます。
- 含まれているページのコードは、プレイヤーイベントをリッスンして行動する必要があります
- プレーヤーは包含ページのスタイルを使用します
- iframe は、含まれているページからのリダイレクトのように、アプリロジックが失敗します。
最終実装で iframe コードを使用しない場合でも、JavaScript 用のプラグインと CSS 用の別のファイルを使用して、ページ内埋め込みコードを使用できます。これにより、ロジックがカプセル化され、複数のプレーヤーで簡単に使用できます。
API/プラグインリソースを使用
API メソッド | API イベント |
---|---|
spacer.appendChild () | トリガー |
currentTime () | オン |
プレーヤー/HTML構成
このセクションでは、プレーヤーの作成時に必要な特別な設定について詳しく説明します。さらに、ページ内埋め込みプレーヤー実装コード以外に、ページに追加する必要があるその他の HTML 要素についても説明します。
プレーヤーの設定
このサンプル用に作成した Brightcove Player には、特別な設定は必要ありません。
その他のHTML
id
video-js
プレーヤーの埋め込みコードのタグに属性を追加することを忘れないでください。
<video-js id="myPlayerID"
...
アプリケーションフロー
このアプリケーションの背後にある基本的なロジックは次のとおりです。
- 巻き戻しボタンの新しい要素を DOM 内に作成します。
- プレーヤーコントロールバーに「戻る」ボタンを追加します。
- ユーザーが [戻る] ボタンをクリックしたときに聞きます。クリックすると、データを使用してカスタムイベントをトリガーします。
- データを含むカスタムイベントをリッスンし、定義されたデータに基づいてビデオ再生を巻き戻します。
DOMに要素を追加する
ラベルが付いたコードを見つけます。
// +++ Add elements to the DOM +++
<div>
DOMに新しい要素を作成し、id
BackButtonの値を持つ属性を割り当てます。DOM <img>
内に新しい要素を作成し、URL src
を持つ属性を巻き戻しボタンに割り当てます。
コントロールバーに巻き戻しボタンを追加する
ラベルが付いたコードを見つけます。
// +++ Add rewind button to the control bar +++
spacer
コントロールバーの要素を取得し、巻き戻しボタン要素を追加します。
[巻き戻し] ボタンを聞く
ラベルが付いたコードを見つけます。
// +++ Listen for the rewind button +++
backButton
要素に、onclick
イベントのリスナーを追加します。クリックすると、データを使用してカスタムイベントをトリガーします。
巻き戻しイベントを聴く
ラベルが付いたコードを見つけます。
// +++ Listen for rewind event +++
データでカスタムイベントを聞きましょう。トリガーされると、rewindAmt
コードで定義されているに基づいてビデオ再生を巻き戻します。
アプリケーションのスタイリング
CSS は、プレーヤーのサイズを調整し、コントロールバーの巻き戻しボタンの位置とサイズ変更に使用されます。
プラグインコード
通常、JavaScript を Brightcove Player プラグインに変換する場合は、公称の変更が必要です。必要な変更の 1 つは、ready()
メソッドの標準使用をプラグインを定義するコードに置き換えることです。
ここでは、プレーヤーで動作するJavaScriptコードへの非常に一般的に使用されるスタートです:
videojs.getPlayer('myPlayerID').ready(function() {
var myPlayer = this;
...
});
最初の行を変更して、標準の構文を使用して Brightcove Player プラグインを起動します。
videojs.registerPlugin('pluginName', function(options) {
var myPlayer = this;
...
});
前述のように、このドキュメントの対応する GitHub レポ: custom-event.js には、プラグインの JavaScript コードが表示されます。
カスタムイベントについて
カスタムイベントを使用すると、DOM オブジェクトとイベントリスナー間の依存関係を分離して排除し、イベント駆動型のアーキテクチャモデルを作成できます。
ディスパッチ
カスタムイベントをディスパッチするには、trigger()
メソッドを次のように使用します。
// trigger a custom event
myPlayer.trigger('eventName');
or
// trigger a custom event with data
myPlayer.trigger('eventName', {data: 'some data'});
カスタムイベントのディスパッチの詳細については、 Player API インデックスを参照してください。
このサンプルでは、コードは次の処理を行います。
- という名前のカスタムイベントを送出します
rewind
amount
の名前と値のデータオブジェクトを送信します5
-JavaScriptコードでこの値が設定されていることがわかります
// trigger a custom event with data
myPlayer.trigger('rewind', {'amount': rewindAmount});
聞け
カスタムイベントをリッスンするには、on()
次のようにメソッドを使用できます。
// listen for a custom event
player.on('eventName', function(evt){});
or
// listen for a custom event with data
player.on('eventName', function(evt,data){});
また、イベントリスナーを 1 回だけトリガーしてから削除する場合は、one()
メソッドを使用できます。イベントをリッスンする方法の詳細については、 Player API インデックスを参照してください。
このサンプルでは、コードは次の処理を行います。
- という名前のカスタムイベントをリッスンします
rewind
- イベントオブジェクトおよびデータオブジェクトを関数に渡します
// listen for a custom event with data
myPlayer.on('rewind',function(evt,data){
});
コンソールにイベントオブジェクトおよびデータオブジェクトを表示すると、次のようになります。