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

93 lines
2.3 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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