84 lines
2.3 KiB
Plaintext
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 |