Laya使用VideoNode動態加載視頻,可以自定義播放視頻此處以及位置

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的定義,創建,封裝)&…