init
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
import { _decorator, instantiate, isValid, Label, Node, Sprite, UITransform, Vec3, VideoPlayer, view } from 'cc';
|
||||
import Utils from '../../Main/Common/Utils';
|
||||
import { InnerMsgCode } from '../../Main/Config/InnerMsgCode';
|
||||
import li_BaseView from '../../Main/Common/li_BaseView';
|
||||
import ResManager from '../../Main/Manager/ResManager';
|
||||
import GlobalValue, { VideoRoleType } from '../../Main/Common/GlobalValue';
|
||||
import { SDKManager } from '../../Main/Channel/SDKManager';
|
||||
import { BgVideo } from '../../Main/Channel/BgVideo';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
//场景背景层 - 视频模式
|
||||
@ccclass('SceneBgVideoLayer')
|
||||
export class SceneBgVideoLayer extends li_BaseView {
|
||||
private _nodeTab: any = {};
|
||||
private _data;
|
||||
|
||||
static handle: SceneBgVideoLayer | null = null;
|
||||
|
||||
private remoteLoopPath: string = "" //远程循环路径
|
||||
private curVideoType: VideoRoleType = VideoRoleType.None;
|
||||
private sceneBg: Sprite = null;
|
||||
private videoInited: boolean = false; //视频是否初始化完成
|
||||
private vpWait: BgVideo | null = null; //播表情视频时暂停的背景视频
|
||||
private emoReady: BgVideo | null = null; //已准备好播放的表情
|
||||
|
||||
/**获取videoplayer副本 */
|
||||
getVideoClone() {
|
||||
let vp = instantiate(this._nodeTab.videoRole)
|
||||
this.node.addChild(vp)
|
||||
let bv = vp.getComponent(BgVideo)!
|
||||
return bv
|
||||
}
|
||||
|
||||
//----重写父类接口---------------------------------------
|
||||
onLoadCT() {
|
||||
this.registerListenner();
|
||||
Utils.parseNode(this.node, this._nodeTab)
|
||||
this.sceneBg = this._nodeTab.sceneBg.getComponent(Sprite)!;
|
||||
if (GlobalValue.NpcVideoMod) {
|
||||
this.setVideoInited(true, true)
|
||||
}
|
||||
SceneBgVideoLayer.handle = this;
|
||||
}
|
||||
openUIDataCT(data: any): void {
|
||||
this._data = data
|
||||
}
|
||||
|
||||
|
||||
registerListenner() {
|
||||
Utils.addInnerEL(InnerMsgCode.SceneLayerBgUp, this, this.resiveBgUp)
|
||||
Utils.addInnerEL(InnerMsgCode.BgVideo_Ready, this, this.resiveBgVideoReady)
|
||||
Utils.addInnerEL(InnerMsgCode.BgVideo_End, this, this.resiveBgVideoEnd)
|
||||
}
|
||||
|
||||
|
||||
start() {
|
||||
}
|
||||
|
||||
update(deltaTime: number) {
|
||||
|
||||
}
|
||||
|
||||
//刷新场景背景消息
|
||||
resiveBgUp(data) {
|
||||
if (!GlobalValue.NpcVideoMod) {
|
||||
return
|
||||
}
|
||||
if (data) {
|
||||
if (data.videoPath) {
|
||||
console.log("bgvideo 收到播放视频消息:", data)
|
||||
if (data.videoType == VideoRoleType.Idle) {
|
||||
this.playLoopVideo(data.videoPath, false)
|
||||
} else {
|
||||
this.playOnceVideo(data.videoPath)
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.videoInited && data.bgPath) {
|
||||
ResManager.I.changeBundleSpriteFrame(this.sceneBg, data.bgPath, "Raw", ()=>{
|
||||
//调整背景图适配
|
||||
Utils.adjustBgPixelRatio(this.sceneBg.node, 1)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**视频准备好消息 */
|
||||
resiveBgVideoReady(data:any) {
|
||||
if (!this.videoInited) {
|
||||
this.setVideoInited(true)
|
||||
}
|
||||
if (data.compo) {
|
||||
if (data.compo.vtype == VideoRoleType.emo) {
|
||||
this.setEmoReadyAudio(data.compo)
|
||||
if (this.curVideoType == VideoRoleType.emo) {
|
||||
this.doPlayEmoReadyAudio()
|
||||
}
|
||||
} else if (data.compo.vtype == VideoRoleType.Idle) {
|
||||
this.curVideoType = VideoRoleType.Idle;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**视频播放完毕消息 */
|
||||
resiveBgVideoEnd(data:any) {
|
||||
if (data.compo) {
|
||||
if (data.compo.vtype == VideoRoleType.emo) {
|
||||
// this.playLoopVideo(this.remoteLoopPath, true)
|
||||
this.doEmoFinish()
|
||||
} else if (data.compo.vtype == VideoRoleType.Idle) {
|
||||
//主视频播完后,检测一下有没有要播的表情视频
|
||||
if (this.doPlayEmoReadyAudio()) {
|
||||
this.setBgAudioPause(data.compo)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**播放循环视频 */
|
||||
playLoopVideo(path: string, force = false) {
|
||||
if (this.remoteLoopPath == path && !force) {
|
||||
return
|
||||
}
|
||||
console.log("bgvideo 播放循环视频", path)
|
||||
this.remoteLoopPath = path
|
||||
SDKManager.PlayBgAudio(path, VideoRoleType.Idle, true)
|
||||
}
|
||||
|
||||
/**播放单次视频 */
|
||||
playOnceVideo(path: string) {
|
||||
console.log("bgvideo 播放单次视频", path)
|
||||
SDKManager.AddEmoAudio(path, VideoRoleType.emo, false)
|
||||
}
|
||||
|
||||
|
||||
//设置视频是否初始化完成
|
||||
setVideoInited(inited: boolean, force: boolean = false) {
|
||||
if (this.videoInited == inited && !force) {
|
||||
return
|
||||
}
|
||||
console.log("bgvideo setVideoInited", inited)
|
||||
this.videoInited = inited
|
||||
this._nodeTab.sceneBg.active = !inited
|
||||
}
|
||||
|
||||
|
||||
//设置暂停播放的主视频
|
||||
setBgAudioPause(wait:BgVideo) {
|
||||
console.log("bgvideo 主视频暂停播放")
|
||||
this.vpWait = wait
|
||||
this.vpWait.pauseVideo()
|
||||
}
|
||||
replayBgAudioPause() {
|
||||
console.log("bgvideo 主视频继续播放")
|
||||
if (this.vpWait) {
|
||||
this.vpWait.replayVideo()
|
||||
}
|
||||
}
|
||||
|
||||
//设置准备好要播放的表情视频
|
||||
setEmoReadyAudio(au: BgVideo) {
|
||||
console.log("bgvideo 设置ready视频", au)
|
||||
if (this.emoReady) {
|
||||
this.emoReady.recycleVideo()
|
||||
}
|
||||
this.emoReady = au;
|
||||
this.emoReady.pauseVideo()
|
||||
}
|
||||
//移除准备好要播放的表情视频
|
||||
removeEmoReadyAudio() {
|
||||
console.log("bgvideo 移除ready视频")
|
||||
if (this.emoReady) {
|
||||
this.emoReady.recycleVideo()
|
||||
}
|
||||
this.emoReady = null
|
||||
}
|
||||
//播放准备好要播放的表情视频
|
||||
doPlayEmoReadyAudio():boolean {
|
||||
if (this.emoReady) {
|
||||
console.log("bgvideo 播放ready视频")
|
||||
this.emoReady.replayVideo()
|
||||
this.emoReady.moveIn()
|
||||
this.curVideoType = VideoRoleType.emo
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
//表情视频播放结束
|
||||
doEmoFinish() {
|
||||
console.log("bgvideo ready视频播放结束")
|
||||
this.removeEmoReadyAudio()
|
||||
this.replayBgAudioPause()
|
||||
this.curVideoType = VideoRoleType.Idle
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user