這篇文章是我看完下面的網頁後,所寫的中文心得:
http://osmf.org/dev/osmf/OtherPDFs/osmf_plugin_dev_guide.pdf
建立一個plug-in的方式
1. 建立一個PluginInfo物件,並且寫一個下面的函數讓OSMF去取得PluginInfo的物件
public function get pluginInfo():PluginInfo { return _pluginInfo; }
2. 建立一個物件繼承PluginInfo,然後建立一個Vector.
public function HelloWorldPluginInfo() { var items:Vector.<mediaFactoryItem> = new Vector.<mediaFactoryItem>(); // Create the MediaFactoryItem and add to our list of items. var item:MediaFactoryItem = new MediaFactoryItem ("com.example.helloworld", canHandleResourceFunction, mediaElementCreationFunction); items.push(item); // Pass the list to the base class. super(items); }
ps: 在建立MediaFactoryItem時會傳入三個參數
第一個參數是一串string,這個MediaFactoryItem的id
第二個參數是一個函數,當有任何資源被指定給MediaFactory.createMediaElement時,這函數會被呼叫,
傳入被指定的資源,回傳一個布林值代表是否要呼叫第三個參數所傳入的函數
private function canHandleResourceFunction(resource:MediaResourceBase):Boolean
第三個參數也是一個函數,當有任何資源被指定給MediaFactory.createMediaElement且第二個參數傳回的值為true時會被呼叫
不會傳入東西,然後要傳回一個MediaElement
private function mediaElementCreationFunction():MediaElement
那建立plugin的方式有兩種:
1. 靜態建立(把plugin用includes進src裡或加進lib庫裡的方式去呼叫)
mediaFactory.loadPlugin(new PluginInfoResource(new HelloWorldPluginInfo()));
2. 動態建立(把plugin用載入swf檔的方式去呼叫)
mediaFactory.loadPlugin(new URLResource("http://example.com/HelloWorldPlugin.swf"));
下載osmf的資料夾裡面有一個sample,裡面有許多plugin的範例
可以研究其使用方式
Plug-in 種類有三種
1. Standard Plug-in (必須指定為 MediaFactoryItemType.STANDARD) 用來建立與回傳單一 MediaElement Standard Plug-in 有兩種子類型,客製化的與 OSMF 內建的 Plug-in 2. Proxy Plug-in (必須指定為 MediaFactoryItemType.PROXY) 必須回傳一個空的 ProxyElement 或子類物件 用來代理其他已經建立好的 Element 可以讓開發者以非侵入的方式改變 MediaElement 的行為 譬如一個 Proxy Plug-in 可以關閉任何 VideoElement Seeking 功能而不需要改變 Player 程式 Proxy Plug-in 會產生一個空的 ProxyElement MediaFactory 在前一個 MediaElement 回傳之前,將 MediaElement 注入到 ProxyElement 因為 ProxyElement 與 MediaElement 具有相同的介面 Player 程式可以與之互動而不需要知道它是 ProxyElement 所有個方法與屬性呼叫都會從代理的 MediaElement 返回,除非 ProxyElement 想要修改行為 3. Reference Plug-in Plug-in 會取得一或多個 MediaElement 參考進行操作 大多數情況 Ref. Plug-in 也會產生一個自己的 MediaElement 譬如 Reference Plug-in 封裝 SWF 壓在 VideoElement 上並取得該參考 然後 SWF Overlay 可以控制 VideoElement 或者封裝某些追蹤的邏輯,監聽 VideoElement 並送出報告 建立 Reference Plug-in 必須要提供 PluginInfo.mediaElementCreationNotificationFunction 方法 每次當 MediaFactory 建立 MediaElement 時候都會呼叫該方法