csharp
export class VideoCommand {
video: Laya.VideoNode;
public duration: number = 0;
/**
* @param videoPos 视频位置
* @param videoSize 视频大小
*/
public constructor(videoPos: Laya.Vector2, videoSize: Laya.Vector2) {
this.video = new Laya.VideoNode;
//添加到舞台 1是场景中的Sene2D,0是场景中Scene3D
Laya.stage.getChildAt(1).addChild(this.video);
this.video.size(videoSize.x, videoSize.y);
this.video.pos(videoPos.x, videoPos.y); //设置到右上角
this.video.visible = false;
}
/**
* @param ready 视频准备就绪事件
*/
public ReadyEvent(ready: () => void) {
this.video.videoTexture.off("ready", this);
this.video.videoTexture.on("ready", this, () => {
console.log("视频准备就绪");
ready?.();
});
}
/**
* 视频开始播放事件
* @param playing 视频开始播放事件
*/
public PlayingEvent(playing: () => void) {
this.video.videoTexture.off("playing", this);
this.video.videoTexture.on("playing", this, () => {
console.log("视频开始播放");
playing?.();
});
}
/**
* 视频播放完成事件
* @param ended 视频播放完成事件
*/
public EndedEvent(ended: () => void) {
this.video.videoTexture.off("ended", this);
this.video.videoTexture.on("ended", this, () => {
console.log("视频播放完成");
this.video.source = "";
ended?.();
});
}
/**
* 设置视频位置
* @param videoPos 视频位置
*/
public SetVideoPos(videoPos: Laya.Vector2) {
this.video.pos(videoPos.x, videoPos.y);
}
/**
* 设置视频大小
* @param videoSize 视频大小
*/
public SetVideoSize(videoSize: Laya.Vector2) {
this.video.size(videoSize.x, videoSize.y);
}
/**
* 设置视频可见性
* @param visible 是否可见
*/
public SetVideoVisible(visible: boolean) {
this.video.visible = visible;
}
/**
* 播放视频
* @param videoPath 视频路径
* @param loop 是否循环播放
*/
public playVideo(videoPath: string, loop: boolean) {
this.video.visible = true;
this.video.loop = loop;
this.video.source = "resources/Media/" + videoPath;
//设置视频帧率
this.video.videoTexture.useFrame = true;
this.video.videoTexture.updateFrame = 30;
this.video.muted = false;
this.video.reload();//重新加载视频
this.video.play(); //开始播放
}
/**
* 暂停视频
* @param action 暂停视频回调
*/
public PauseVideo(action: () => void) {
this.video.pause();
action?.();
}
/**
* 获取视频时长
*/
public Getduration() {
return this.duration;
}
/**
* 销毁视频
*/
public DestroyVideo() {
this.video.offAll();
this.video.destroy();
}
}
使用方法
javascript
const { regClass, property } = Laya;
//这个是视频脚本的路径
import { VideoCommand } from "../Tool/VideoCommand";
@regClass()
export class Test extends Laya.Script{
public Start() {
let videoCommand = new VideoCommand(new Laya.Vector2(0, 0), new Laya.Vector2(1600, 900));
videoCommand.playVideo("resource路径下的视频路径", false);
videoCommand.EndedEvent(() => {});
}
}