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是場景中Scene3DLaya.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();}
}
使用方法
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(() => {});}}