您可以使用 ActionScript 添加 ActionScript 提示点、侦听
cuePoint
事件、查找任何类型或特定类型的提示点、搜索导航提示点、启用或禁用提示点、检查是否启用了某个提示点以及删除提示点。
本节中的示例使用名为 cuepoints.flv 的 FLV 文件,它包含以下 3 个提示点:
名称
|
时间
|
类型
|
point1
|
00:00:00.418
|
导航
|
point2
|
00:00:07.748
|
导航
|
point3
|
00:00:16.020
|
导航
|
添加 ActionScript 提示点
您可以使用
addASCuePoint()
方法将 ActionScript 提示点添加到 FLV 文件。以下示例在 FLV 文件可供播放时向该 FLV 文件添加 2 个 ActionScript 提示点。该示例使用提示点对象添加第 1 个提示点,在其属性中指定该提示点的时间、名称和类型。第 2 个调用使用该方法的
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()。