2012-02-21 21 views
1

我正在嘗試爲OSMF創建一個代理插件,該插件將充當分析插件,用於跟蹤某些事件。我想跟蹤視頻的當前時間。使用OSMF代理插件監聽當前時間變化

在用於代理的元件的集方法,我有以下:

proxiedElement.addEventListener(MediaElementEvent.TRAIT_ADD, _onTraitAdd); 

爲DURATION_CHANGE和CURRENT_TIME_CHANGE事件然後,在_onTraitAdd方法,我附上事件偵聽器。

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事件以跟蹤視頻的當前時間?

我分析了Google Analytics plugin for OSMF,聲稱每5,10或20秒追蹤一次,但是looking at the code,它不清楚它如何管理追蹤當前時間。

回答

2

解決方案是在媒體播放器上添加時間更改事件偵聽器。

首先,需要將媒體播放器的引用傳遞給資源。

在插件的主類中,在定義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)廣告插件。