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(() => {};}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98710.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98710.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/98710.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yum localinstall安装本地包

yum localinstall 是一个用于安装本地 RPM 包并自动处理依赖关系的命令。当你有一个或多个本地的 RPM 包需要安装,又希望 yum 能帮你解决可能存在的依赖问题时,这个命令就非常有用。下面我会详细解释它的用法和注意事项。 🖥️ 命令基本用法 yum localinstall 命令的基本…

LeetCode 面试经典 150 题:轮转数组(三次翻转法详解 + 多解法对比)

在数组类算法题中,“轮转数组” 是一道考察 “原地操作” 与 “逻辑转换” 能力的经典题目。所谓 “轮转”,是指将数组元素向右移动指定步数,且超出数组长度的元素需 “循环” 到数组开头。这道题的最优解 ——三次翻转法,能以 O …

网络编程---TCP

1.TCP:传输控制协议,位于传输层2.TCP的特性:a.使用流式套接字,数据连续,有顺序b.TCP是可靠传输,有有应答机制ACK,即收到数据后会明确告知发送方已收到数据;若发送方没有在预计时间收…

对计算机网络模型的理解

文章目录 目录 前言 一、Internet 的核心特点 二、Internet 的组成结构 1. 硬件基础:网络运行的 “物理载体” 2. 软件支撑:网络运行的 “功能桥梁” 3. 协议规则:网络运行的 “通用语言” 三、OSI 七层参考模型(理论标准&…

每日一算:分发糖果

在算法面试中,“分发糖果” 是一道经典的贪心算法应用题,核心考察对 “局部最优推导全局最优” 的理解。本文将从问题分析出发,提供两种主流解题思路,并附上 C 实现代码,帮助你彻底掌握这道题。一、问题重述题目要求有…

【WorkManager】无法在 Direct Boot 模式下初始化

【WorkManager】无法在 Direct Boot 模式下初始化一、问题描述二、问题分析2.1 关于 Direct Boot 模式2.2 支持 Direct Boot 模式2.3 手动初始化 WorkManager 组件2.4 WorkManager 不支持 Direct Boot 的官方修改三、解决方案一、问题描述 在使用 WorkManager 库来实现开机上报…

Hybrid应用性能优化实战分享(本文iOS 与 H5为例,安卓同理)

前言在移动应用开发中,Hybrid 架构因其跨平台特性和开发效率优势被广泛采用。然而,WebView 的性能问题一直是开发者面临的挑战。本文将基于实际项目经验,分享 iOS Hybrid 应用的核心优化策略,涵盖 WebView 池化、预加载、用户体验…

点积、叉积、矩阵行列式详解、线性相关与线性无关、矩阵的秩、矩阵可逆与不可逆详解

1.向量 1.1 点积(Dot Product) 1.1.1 定义 点积是在求一个标量,点积结果没有方向。 对于两个向量u(u1,u2,u3),v(v1,v2,v3)\bold{u}(u_1,u_2,u_3),\bold{v}(v_1,v_2,v_3)u(u1​,u2​,u3​),v(v1​,v2​,v3​) 点积定义为:u⋅vu1v1u…

Mac安装nvm详细教程(超简单)

本章教程,主要介绍如何在Mac操作系统上安装nvm. 我们使用官方一键安装脚本,完成安装 一、安装步骤 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash配置环境变量,编辑.zshrc文件 vim .zshrcexport NVM_DIR="$(

【selenium】网页元素找不到?从$(‘[placeholder=“手机号“]‘)说起

网页元素找不到?从$(‘[placeholder“手机号”]’)说起总结:控制台不骗人,元素选不到,八成是写法、时机或环境的问题。我们在写网页自动化脚本或者调试页面的时候,经常遇到一个让人头疼的问题:明明元素就在…

SSE 模仿 GPT 响应

后端代码 const express require(express) const cors require(cors);const app express(); app.use(cors()); const port 3000;app.listen(port, () > {console.log(Server running at http://localhost:${port}/); });const msg 全国同胞们, 尊敬的各位国…

MAC 多个版本 JDK进行切换

1.查看本机所有的jdk/usr/libexec/java_home -V2、打开bash_profile文件。可以在终端vim ~/.bash_profile打开,也可以打开访达shiftcmdG然后输入/Users/mac/.bash_profile(本机bash_profile的路径)加入新的环境变量格式如下(参考我…

shell 中 expect 详解

一、概述Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者DonLibes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件。通过expect系统管理员可以创…

第4讲 机器学习基础概念

机器学习作为人工智能的子领域,专注于训练计算机算法自动发现数据中的模式与关联关系。以下是其核心基础概念:4.1 数据数据是机器学习的基石。缺乏数据,算法将无从学习。数据可呈现为结构化数据(如电子表格、数据库)和…

Go组合式继承:灵活替代方案

Go 语言没有传统面向对象编程中的继承机制,但通过组合和接口实现类似功能。Go 更提倡组合优于继承的设计原则,这种设计方式更灵活且易于维护。结构体组合(伪继承)通过嵌套结构体实现类似继承的效果。子结构体可以直接访问父结构体…

Verilog三段式FSM,实现十字路口红绿灯

运行环境:VCS verdi状态说明:S0 : 初始状态 S1 : 东西方向绿灯亮,南北方向红灯亮;点亮30周期 S2 : 东西方向黄灯亮,南北方向红灯亮;点亮2 周期 S3 : 东西方向…

java 将pdf转图片

如何将pdf文件转为图片 import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.PDFRenderer; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class Pdf2Png {/**…

手搓Spring

目录 两种方法创建Spring容器 自定义Spring容器及前置操作 Spring扫描逻辑实现 createBean()方法 getBean()方法 依赖注入(DI) BeanNameAware接口 InitializingBean接口 BeanPostProcessor接口 AOP的实现 Spring 是一个轻量级的 Java 开发框架…

.NET 单文件程序详解:从原理到实践

C# 混淆加密大师在最新版本中, 提供了.NET单文件解包打包功能, 它可以快速解包官方打包的单文件程序,恢复为原始的多文件结构。也可以对解包后的程序集进行混淆与加密,有效提升逆向门槛。最后还能重新打包成单文件程序,保持对用户友好的分发形…

Spring面试题记录?

请简述 Spring 框架的核心是什么?它主要包含了哪些核心模块? spring的核心模块主要有spring-core(工具类,资源加载),spring-bean(bean的定义,创建,封装)&…