跳到主要内容

egret.Video

   egret

   public class Video

继承    egret.Video → egret.DisplayObjectegret.EventDispatcheregret.HashObject

Video 允许您在应用程序中使用视频。使用 Video 类可以创建 Video 对象、将外部视频文件加载到该对象并播放该文件。

注意: 在大多数移动设备中,视频是强制全屏播放的,所以你可以直接调用 play() 方法全屏播放视频,不用将它绘制在Stage中。

公共属性

属性
bitmapData : egret.BitmapData
获取视频的 bitmapData, 你可以将视频绘制到舞台上
fullscreen : boolean
是否全屏播放这个视频(默认值是 true)
length : number
当前视频的长度(以秒为单位)
paused : boolean
当前视频是否在暂停状态
position : number
当播放视频时,position 属性表示视频文件中当前播放的位置(以秒为单位)
poster : string
视频加载前,或者在不支持将 video 画在 canvas 的设备上,想要显示的视频截图地址
src : string
想要播放的视频的URL
volume : number
音量范围从 0(静音)至 1(最大音量)

公共方法

方法
Video(url:string,cache:boolean)
close():void
关闭该流,从而停止所有数据的下载
load(url:string,cache:boolean):void
启动从指定 URL 加载外部视频文件的过程
pause():void
暂停播放
play(startTime:number,loop:boolean)
播放该视频

事件

Events
egret.Event.COMPLETE
视频加载完成时抛出
egret.Event.ENDED
视频播放完成时抛出
egret.IOErrorEvent.IO_ERROR
视频加载失败时触发
egret.Event.ADDED
将显示对象添加到显示列表中时调度。
egret.Event.ADDED_TO_STAGE
在将显示对象直接添加到舞台显示列表或将包含显示对象的子树添加至舞台显示列表中时调度。
egret.Event.REMOVED
将要从显示列表中删除显示对象时调度。
egret.Event.REMOVED_FROM_STAGE
在从显示列表中直接删除显示对象或删除包含显示对象的子树时调度。
egret.Event.ENTER_FRAME
[广播事件] 播放头进入新帧时调度。
egret.Event.RENDER
[广播事件] 将要更新和呈现显示列表时调度。
egret.TouchEvent.TOUCH_MOVE
当用户触碰设备时进行调度,而且会连续调度,直到接触点被删除。
egret.TouchEvent.TOUCH_BEGIN
当用户第一次触摸启用触摸的设备时(例如,用手指触摸手机屏幕)调度。
egret.TouchEvent.TOUCH_END
当用户移除与启用触摸的设备的接触时(例如,将手指从屏幕上抬起)调度。
egret.TouchEvent.TOUCH_TAP
当用户在启用触摸设备上的已启动接触的同一 DisplayObject 实例上抬起接触点时(例如,手机点击屏幕后抬起)调度。
egret.TouchEvent.TOUCH_RELEASE_OUTSIDE
当用户在启用触摸设备上的已启动接触的不同 DisplayObject 实例上抬起接触点时(例如,按住屏幕上的某个对象,然后从它上面挪开后再松开手指)调度。

属性详细信息

bitmapData

bitmapData : egret.BitmapData

  • 支持版本:Egret 2.4
  • 运行平台:Web

获取视频的 bitmapData, 你可以将视频绘制到舞台上。注意: 在大多数移动设备中,视频是全屏播放的,所以你可以直接调用 play() 方法全屏播放视频,不用将它绘制在Stage中。

fullscreen

fullscreen : boolean

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

是否全屏播放这个视频(默认值是 true)。目前移动端 web 只支持全屏。

length

length : number

  • 支持版本:Egret 3.0.8
  • 运行平台:Web,Native

当前视频的长度(以秒为单位)。

paused

paused : boolean

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

当前视频是否在暂停状态。

position

position : number

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

当播放视频时,position 属性表示视频文件中当前播放的位置(以秒为单位)

poster

poster : string

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

视频加载前,或者在不支持将 video 画在 canvas 的设备上,想要显示的视频截图地址。

src

src : string

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

想要播放的视频的URL

volume

volume : number

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

音量范围从 0(静音)至 1(最大音量)。

方法详细信息

Video()

public Video(url:string,cache:boolean)

  • 支持版本:all
  • 运行平台:Web,Native
  • 参数

close()

public close():void

关闭该流,从而停止所有数据的下载。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

load()

public load(url:string,cache:boolean):void

启动从指定 URL 加载外部视频文件的过程。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • url:string - 需要加载的视频文件URL
    • cache:boolean - 是否需要缓存到本地,只在 Native 上使用

pause()

public pause():void

暂停播放。

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native

play()

public play(startTime:number,loop:boolean)

播放该视频

  • 支持版本:Egret 2.4
  • 运行平台:Web,Native
  • 参数
    • startTime:number - 应开始播放的初始位置(以秒为单位),默认值是视频上次结束的位置
    • loop:boolean - 是否需要循环播放,默认值是 false

示例

/*
* 以下示例加载一个视频文件,进行播放,并以两种方式演示视频的控制。
*/
class VideoExample extends egret.DisplayObjectContainer {
constructor() {
super();
[0, 1].forEach(i => {
const video = new egret.Video();
video.x = 50;
video.y = i * 280 + 20;
video.width = 427;
video.height = 240;
video.fullscreen = i == 0;
egret.log(video.fullscreen, i == 0);
video.poster = video.fullscreen ? "resource/posterfullscreen.jpg" : "resource/posterinline.jpg";
video.touchEnabled = true;
video.once(egret.TouchEvent.TOUCH_TAP, this.playVideo, this);
video.load("resource/video/trailer.mp4");
this.addChild(video);
const text = new egret.TextField();
text.text = "Loading";
text.x = 50;
text.y = (i + 1) * 280 - 20;
video.addEventListener(egret.Event.COMPLETE, e => text.text = "Loaded, click video to play", this);
this.addChild(text);
});
}
private playVideo(e: egret.TouchEvent) {
egret.log(this);
const video = <egret.Video>e.target;
video.play();
video.once(egret.TouchEvent.TOUCH_TAP, this.stopVideo, this);
video.once(egret.Event.ENDED, this.stopVideo, this);
}
private stopVideo(e: egret.TouchEvent) {
const video = <egret.Video>e.target;
video.removeEventListener(egret.Event.ENDED, this.stopVideo, this);
video.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.stopVideo, this);
video.pause();
video.once(egret.TouchEvent.TOUCH_TAP, this.playVideo, this);
}
}