2012-02-21 2 views
1

OSMF用のプロキシプラグインを作成しようとしていますが、これは特定のイベントを追跡する分析プラグインとして機能します。私はビデオの現在の時刻を追跡したい。プロキシされた要素のセット方法はOSMFプロキシプラグインを使用して現在の時刻変更を聞く

、私は次のようにあります

proxiedElement.addEventListener(MediaElementEvent.TRAIT_ADD, _onTraitAdd); 

その後、_onTraitAdd方法では、私がDURATION_CHANGEとCURRENT_TIME_CHANGEイベントのイベントリスナーを添付しています。

private function _onTraitAdd(event:MediaElementEvent):void { 
     trace("adding trait"); 
     trace(event.traitType); 

     if (MediaTraitType.TIME == event.traitType) 
     { 
      //Get the time trait, so we can handle the duration changed event 
      var timeTrait:TimeTrait = proxiedElement.getTrait(MediaTraitType.TIME) as TimeTrait; 
      timeTrait.addEventListener(TimeEvent.DURATION_CHANGE, _onDurationChanged); 
      timeTrait.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, _onTimeChanged); 
      //debug("Media has a timeline"); 

     } 

    } 

最初のイベント、DURATION_CHANGEは、しかし、二つ目が発射されることはありません、ビデオの冒頭で焼成されます。

ビデオの現在の時刻をトラッキングするために、どの要素にCURRENT_TIME_CHANGEイベントを添付する必要がありますか?

looking at the codeの5秒10秒ごとにトラッキングすると主張しているGoogle Analytics plugin for OSMFを分析したところ、現在の時刻をどのように管理するのかは不明です。

答えて

2

解決策は、メディアプレーヤーに時間変更イベントリスナーを追加することでした。

まず、メディアプレーヤーのリファレンスをリソースに渡す必要があります。

pluginのメインクラスでは、pluginResourceを定義した後で次を追加します。

pluginResource.addMetadataValue("MediaPlayer", mediaPlayer); 

次に、PluginInfoを拡張するクラスで、initializePluginメソッドをオーバーライドします。 MediaPlayerリファレンスを取得し、イベントリスナーを追加します。

*/ 
override public function initializePlugin(resource:MediaResourceBase):void 
{ 
var mediaPlayer:MediaPlayer = resource.getMetadataValue("MediaPlayer") as MediaPlayer; 
mediaPlayer.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, _onTimeChanged); 

} 

private function _onTimeChanged(event:TimeEvent):void { 

    trace("event.time", event.time); 
    } 

詳細情報については、OSMFソースファイル(AdvertisementPluginInfo.as)に含ま広告プラグインを参照してください。

関連する問題