您也可以在 FLVPlayback 組件的單一實體內開啟多個視訊播放程式,以播放多個視訊並在播放的同時進行切換。
將 FLVPlayback 組件拖曳到「舞台」時,便會建立初始視訊播放程式。組件會自動指派數字 0 給初始視訊播放程式,讓它成為預設的播放程式。只要將
activeVideoPlayerIndex
屬性設定為新的數字,即可建立其它視訊播放程式。設定
activeVideoPlayerIndex
屬性也會使指定的視訊播放程式成為「作用中」視訊播放程式,而該視訊播放程式將會受 FLVPlayback 類別的屬性和方法影響。不過,設定
activeVideoPlayerIndex
屬性並不會將視訊播放程式顯示出來。若要讓視訊播放程式變成可見的狀態,請將
visibleVideoPlayerIndex
屬性設定為視訊播放程式的編號。如需有關這些屬性如何與 FLVPlayback 類別之方法和屬性互動的詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.activeVideoPlayerIndex 與 FLVPlayback.visibleVideoPlayerIndex 屬性。
下列 ActionScript 程式碼會載入
source
屬性,以便在預設視訊播放程式中播放視訊檔,並為它新增提示點。當
ready
事件發生時,事件處理常式會將
activeVideoPlayerIndex
屬性設定為數字 1 以開啟第二個視訊播放程式,再為第二個視訊播放程式指定 FLV 檔和提示點,然後讓預設播放程式 (0) 再次成為現用的視訊播放程式。
/**
Requires:
- FLVPlayback component on the Stage with an instance name of my_FLVPlybk
*/
// add a cue point to the default player
import fl.video.*;
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/clouds.flv";
my_FLVPlybk.addASCuePoint(3, "1st_switch");
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener);
function ready_listener(eventObject:VideoEvent):void {
// add a second video player and create a cue point for it
my_FLVPlybk.activeVideoPlayerIndex = 1;
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/water.flv";
my_FLVPlybk.addASCuePoint(3, "2nd_switch");
my_FLVPlybk.activeVideoPlayerIndex = 0;
};
若要在播放 FLV 檔時切換至其它 FLV 檔,您必須在 ActionScript 程式碼中進行切換。提示點可讓您利用
cuePoint
事件介入 FLV 檔中特定的時間點。下列程式碼會為
cuePoint
事件建立偵聽程式,並呼叫能夠暫停現用視訊播放程式 (0)、切換至第二個播放程式 (1) 及播放其 FLV 檔的處理常式函數:
import fl.video.*;
// add listener for a cuePoint event
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener);
// add the handler function for the cuePoint event
function cp_listener(eventObject:MetadataEvent):void {
// display the no. of the video player causing the event
trace("Hit cuePoint event for player: " + eventObject.vp);
// test for the video player and switch FLV files accordingly
if (eventObject.vp == 0) {
my_FLVPlybk.pause(); //pause the first FLV file
my_FLVPlybk.activeVideoPlayerIndex = 1; // make the 2nd player active
my_FLVPlybk.visibleVideoPlayerIndex = 1; // make the 2nd player visible
my_FLVPlybk.play(); // begin playing the new player/FLV
} else if (eventObject.vp == 1) {
my_FLVPlybk.pause(); // pause the 2nd FLV
my_FLVPlybk.activeVideoPlayerIndex = 0; // make the 1st player active
my_FLVPlybk.visibleVideoPlayerIndex = 0; // make the 1st player visible
my_FLVPlybk.play(); // begin playing the 1st player
}
}
my_FLVPlybk.addEventListener(VideoEvent.COMPLETE, complete_listener);
function complete_listener(eventObject:VideoEvent):void {
trace("Hit complete event for player: " + eventObject.vp);
if (eventObject.vp == 0) {
my_FLVPlybk.activeVideoPlayerIndex = 1;
my_FLVPlybk.visibleVideoPlayerIndex = 1;
my_FLVPlybk.play();
} else {
my_FLVPlybk.closeVideoPlayer(1);
}
};
當您建立新的視訊播放程式時,FLVPlayback 實體會將視訊播放程式的屬性設定為預設視訊播放程式的值,但
source
、
totalTime
和
isLive
屬性除外,因為 FLVPlayback 實體永遠都會將這些屬性設定為預設值:分別為空字串、0 和
false
。它會將預設視訊播放程式原本預設為
true
的
autoPlay
屬性設定為
false
。
cuePoints
屬性不會有任何作用,並且對預設視訊播放程式的後續載入動作也沒有作用。
控制音量、位置、尺寸、可見性和使用者介面控制項的方法和屬性永遠是通用的,而且其行為不會因為
activeVideoPlayerIndex
屬性的設定而受到影響。如需有關這些方法和屬性以及設定
activeVideoPlayerIndex
屬性影響的詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.activeVideoPlayerIndex 屬性。其餘的屬性和方法會以
activeVideoPlayerIndex
屬性值所識別的視訊播放程式為目標。
不過,控制尺寸的屬性和方法仍將與
visibleVideoPlayerIndex
屬性互動。如需詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.visibleVideoPlayerIndex 屬性。