2025-06-04 05:12:01 +08:00

84 lines
2.3 KiB
Plaintext

using "RenderHeads.Media.AVProVideo"
MediaPanel = class("MediaPanel", ContainerView)
autoImport("ShopViewExchangePage")
MediaPanel.PlayVideo = "MediaPanel.PlayVideo"
MediaPanel.PlayVideoFinish = "MediaPanel.PlayVideoFinish"
MediaPanel.ViewType = UIViewType.MovieLayer
function MediaPanel:Init()
self:FindObjs()
self:AddViewEvts()
end
function MediaPanel:FindObjs()
self.videoApplyDelegate = self:FindGO("VideoCanvas"):GetComponent(ApplyToDelegate)
self.mediaPlayer = self:FindGO("MediaPlayer"):GetComponent(MediaPlayer)
self.videoCanvas = self:FindGO("VideoCanvas"):GetComponent(UITexture)
self:AddButtonEvent("SkipIt",function ()
self:FinishPlaying()
end)
end
function MediaPanel:AddViewEvts()
self:AddListenEvt(MediaPanel.PlayVideo, self.NotifyPlayVideo);
end
function MediaPanel:NotifyPlayVideo(note)
self:StartPlay(note.body)
end
function MediaPanel:StartPlay(videoName)
if(self.mediaPlayer.Control~=nil) then
self:RealStartPlay(videoName)
else
LeanTween.delayedCall(2,function ()
self:RealStartPlay(videoName)
end):setUseFrames(true)
end
end
function MediaPanel:RealStartPlay(videoName)
local res = false
if(videoName~=nil and videoName ~="") then
self.videoApplyDelegate.receiver = function (texture,scale,offset)
self.videoCanvas.mainTexture = texture
if(not self.textureMakePixelPerfect) then
self.videoCanvas:MakePixelPerfect()
end
end
self.mediaPlayer:AddListener(function (mp,et)
if(et==MediaPlayerEvent.EventType.FinishedPlaying) then
self:FinishPlaying()
end
end)
if(ApplicationHelper.AssetBundleLoadMode) then
--熱更新模式
res = self.mediaPlayer:OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToPeristentDataFolder,ApplicationHelper.platformFolder.."/Videos/"..videoName)
else
res = self.mediaPlayer:OpenVideoFromFile(MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder,"Videos/"..videoName)
end
end
if(not res) then
if(videoName ==nil) then
videoName = "[videoName]為空"
end
errorLog("播放視訊失敗.."..videoName)
self:FinishPlaying()
end
end
function MediaPanel:FinishPlaying()
if(self.mediaPlayer~=nil) then
self.mediaPlayer:Stop()
self.mediaPlayer:CloseVideo()
end
self.videoApplyDelegate.receiver = nil
self.videoCanvas.mainTexture = nil
self:sendNotification(MediaPanel.PlayVideoFinish)
self:CloseSelf()
end