sk-client/Assets/ManagedResources/~Lua/Modules/Video/VideoPanel.lua

93 lines
2.3 KiB
Lua
Raw Normal View History

2024-07-03 18:38:10 +08:00
require("Base/BasePanel")
local VideoPanel = Inherit(BasePanel)
local this = VideoPanel
local videoName = nil
--初始化组件(用于子类重写)
function VideoPanel:InitComponent()
this.Button_Skip = Util.GetGameObject(self.gameObject, "Button_Skip")
this.VideoPlayer = Util.GetGameObject(self.gameObject, "RawImage"):GetComponent("VideoPlayer")
end
--绑定事件(用于子类重写)
function VideoPanel:BindEvent()
Util.AddClick(this.Button_Skip, function()
this.VideoStop()
end)
end
--添加事件监听(用于子类重写)
function VideoPanel:AddListener()
end
--移除事件监听(用于子类重写)
function VideoPanel:RemoveListener()
end
--界面打开时调用(用于子类重写)
function VideoPanel:OnOpen(...)
local args = {...}
videoName = args[1]
stopFunc = args[2]
if videoName then
this.VideoStartPlay()
end
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function VideoPanel:OnShow(...)
end
--界面层级发生改变(用于子类重写)
function VideoPanel:OnSortingOrderChange()
end
--界面关闭时调用(用于子类重写)
function VideoPanel:OnClose()
videoName = nil
end
--界面销毁时调用(用于子类重写)
function VideoPanel:OnDestroy()
end
-- function this:Update()
-- 如果loopPointReached不好用用这个
-- if this.VideoPlayer.frame == this.VideoPlayer.frameCount then
-- Video has finshed playing!
-- this.VideoStop()
-- LogError("1111111111111111111111")
-- end
-- end
--开始播放
function this.VideoStartPlay()
local VideoClip = resMgr:LoadAsset(videoName)
if not VideoClip then
LogError("没有找到VideoClip" .. videoName)
return;
end
this.VideoPlayer.loopPointReached = this.VideoPlayer.loopPointReached + this.VideoStop
this.VideoPlayer.clip = VideoClip
this.VideoPlayer:Play()
end
--播放完成后
function this.VideoStop()
this.VideoPlayer.loopPointReached = this.VideoPlayer.loopPointReached - this.VideoStop
this.VideoPlayer:Stop()
this.VideoPlayer.targetTexture:Release()
this.VideoPlayer.targetTexture:MarkRestoreExpected()
if stopFunc then
stopFunc()
end
this:ClosePanel()
end
return VideoPanel