您可以利用 ActionScript 來新增 ActionScript 提示點、偵聽
cuePoint
事件、尋找任何類型或特定類型的提示點、搜尋瀏覽提示點、啟用或停用提示點、確認提示點是否已啟用以及移除提示點。
本節中的範例使用名為 cuepoints.flv 的 FLV 檔,這個檔案包含下列三個提示點:
名稱
|
時間
|
類型
|
point1
|
00:00:00.418
|
瀏覽
|
point2
|
00:00:07.748
|
瀏覽
|
point3
|
00:00:16.020
|
瀏覽
|
新增 ActionScript 提示點
您可以使用
addASCuePoint()
方法,在 FLV 檔中新增 ActionScript 提示點。下列範例會在已準備要播放的 FLV 檔中新增兩個 ActionScript 提示點。此範例使用提示點物件來新增第一個提示點,並透過物件屬性指定提示點的時間、名稱和類型。第二個呼叫會使用方法的
time
和
name
參數來指定時間和名稱。
// Requires an FLVPlayback instance called my_FLVPlybk on Stage
import fl.video.*;
import fl.video.MetadataEvent;
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv"
var cuePt:Object = new Object(); //create cue point object
cuePt.time = 2.02;
cuePt.name = "ASpt1";
cuePt.type = "actionscript";
my_FLVPlybk.addASCuePoint(cuePt);//add AS cue point
// add 2nd AS cue point using time and name parameters
my_FLVPlybk.addASCuePoint(5, "ASpt2");
如需詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.addASCuePoint() 方法。
偵聽 cuePoint 事件
cuePoint
事件可讓您在
cuePoint
事件發生時,經由 ActionScript 程式碼接手控制權。當下列範例中的提示點發生時,
cuePoint
偵聽程式會呼叫事件處理常式函數,以顯示
playheadTime
屬性的值以及提示點的名稱和類型。將此範例與上一節「新增 ActionScript 提示點」中的範例搭配使用,即可查看結果。
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener);
function cp_listener(eventObject:MetadataEvent):void {
trace("Elapsed time in seconds: " + my_FLVPlybk.playheadTime);
trace("Cue point name is: " + eventObject.info.name);
trace("Cue point type is: " + eventObject.info.type);
}
如需有關
cuePoint
事件的詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.cuePoint 事件。
尋找提示點
您可以使用 ActionScript 來尋找任何類型的提示點、最接近某個時間的提示點或具有特定名稱的下一個提示點。
下列範例中的
ready_listener()
事件處理常式會呼叫
findCuePoint()
方法來尋找提示點
ASpt1
,接著呼叫
findNearestCuePoint()
方法來尋找最接近提示點
ASpt1
時間的瀏覽提示點:
import fl.video.FLVPlayback;
import fl.video.CuePointType;
import fl.video.VideoEvent;
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv"
var rtn_obj:Object; //create cue point object
my_FLVPlybk.addASCuePoint(2.02, "ASpt1");//add AS cue point
function ready_listener(eventObject:VideoEvent):void {
rtn_obj = my_FLVPlybk.findCuePoint("ASpt1", CuePointType.ACTIONSCRIPT);
traceit(rtn_obj);
rtn_obj = my_FLVPlybk.findNearestCuePoint(rtn_obj.time, CuePointType.NAVIGATION);
traceit(rtn_obj);
}
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener);
function traceit(cuePoint:Object):void {
trace("Cue point name is: " + cuePoint.name);
trace("Cue point time is: " + cuePoint.time);
trace("Cue point type is: " + cuePoint.type);
}
下列範例中的
ready_listener()
事件處理常式會尋找提示點
ASpt
,並呼叫
findNextCuePointWithName()
方法尋找具有相同名稱的下一個提示點:
import fl.video.*;
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv"
var rtn_obj:Object; //create cue point object
my_FLVPlybk.addASCuePoint(2.02, "ASpt");//add AS cue point
my_FLVPlybk.addASCuePoint(3.4, "ASpt");//add 2nd Aspt
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener);
function ready_listener(eventObject:VideoEvent):void {
rtn_obj = my_FLVPlybk.findCuePoint("ASpt", CuePointType.ACTIONSCRIPT);
traceit(rtn_obj);
rtn_obj = my_FLVPlybk.findNextCuePointWithName(rtn_obj);
traceit(rtn_obj);
}
function traceit(cuePoint:Object):void {
trace("Cue point name is: " + cuePoint.name);
trace("Cue point time is: " + cuePoint.time);
trace("Cue point type is: " + cuePoint.type);
}
如需有關尋找提示點的詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.findCuePoint()、FLVPlayback.findNearestCuePoint() 以及 FLVPlayback.findNextCuePointWithName() 方法。
搜尋瀏覽提示點
您可以搜尋瀏覽提示點、從特定時間搜尋下一個瀏覽提示點,以及從特定時間搜尋上一個瀏覽提示點。下列範例會播放 FLV 檔 cuepoints.flv,並在
ready
事件發生時,搜尋位於 7.748 的提示點。當
cuePoint
事件發生時,這個範例會呼叫
seekToPrevNavCuePoint()
方法來搜尋第一個提示點。在該
cuePoint
事件發生時,此範例會呼叫
seekToNextNavCuePoint()
方法,透過將
eventObject.info.time
(目前提示點的時間) 增加 10 秒的方式,搜尋最後一個提示點。
import fl.video.*;
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener);
function ready_listener(eventObject:Object):void {
my_FLVPlybk.seekToNavCuePoint("point2");
}
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener);
function cp_listener(eventObject:MetadataEvent):void {
trace(eventObject.info.time);
if(eventObject.info.time == 7.748)
my_FLVPlybk.seekToPrevNavCuePoint(eventObject.info.time - .005);
else
my_FLVPlybk.seekToNextNavCuePoint(eventObject.info.time + 10);
}
my_FLVPlybk.source = "http://helpexamples.com/flash/video/cuepoints.flv";
如需詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.seekToNavCuePoint()、FLVPlayback.seekToNextNavCuePoint() 以及 FLVPlayback.seekToPrevNavCuePoint() 方法。
啟用和停用內嵌 FLV 檔的提示點
您可以使用
setFLVCuePointEnabled()
方法,啟用和停用內嵌 FLV 檔的提示點。停用的提示點不會觸發
cuePoint
事件,也不會使用
seekToCuePoint()
、
seekToNextNavCuePoint()
或
seekToPrevNavCuePoint()
方法。不過,您還是可以利用
findCuePoint()
、
findNearestCuePoint()
和
findNextCuePointWithName()
方法來尋找停用的提示點。
您可以使用
isFLVCuePointEnabled()
方法來測試內嵌 FLV 檔的提示點是否已啟用。下列範例會在視訊準備好要播放時,停用內嵌提示點
point2
和
point3
。不過,當第一個
cuePoint
事件發生時,事件處理常式會進行測試,以查看提示點
point3
是否已停用,若停用了,便會加以啟用。
import fl.video.*;
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv";
my_FLVPlybk.addEventListener(VideoEvent.READY, ready_listener);
function ready_listener(eventObject:VideoEvent):void {
my_FLVPlybk.setFLVCuePointEnabled(false, "point2");
my_FLVPlybk.setFLVCuePointEnabled(false, "point3");
}
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener);
function cp_listener(eventObject:MetadataEvent):void {
trace("Cue point time is: " + eventObject.info.time);
trace("Cue point name is: " + eventObject.info.name);
trace("Cue point type is: " + eventObject.info.type);
if (my_FLVPlybk.isFLVCuePointEnabled("point2") == false) {
my_FLVPlybk.setFLVCuePointEnabled(true, "point2");
}
}
如需詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.isFLVCuePointEnabled() 和 FLVPlayback.setFLVCuePointEnabled() 方法。
移除 ActionScript 提示點
您可以使用
removeASCuePoint()
方法來移除 ActionScript 提示點。下列範例會在提示點
ASpt1
發生時,移除提示點
ASpt2
:
import fl.video.*;
my_FLVPlybk.source = "http://www.helpexamples.com/flash/video/cuepoints.flv"
my_FLVPlybk.addASCuePoint(2.02, "ASpt1");//add AS cue point
my_FLVPlybk.addASCuePoint(3.4, "ASpt2");//add 2nd Aspt
my_FLVPlybk.addEventListener(MetadataEvent.CUE_POINT, cp_listener);
function cp_listener(eventObject:MetadataEvent):void {
trace("Cue point name is: " + eventObject.info.name);
if (eventObject.info.name == "ASpt1") {
my_FLVPlybk.removeASCuePoint("ASpt2");
trace("Removed cue point ASpt2");
}
}
如需詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的 FLVPlayback.removeASCuePoint()。