123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- import { gameMgr } from "../Game/gameMgr";
- import setMap from "../Game/setMap";
- import GuideLayer, { guideLayer } from "../UI/GuideLayer";
- import { cocosz } from "./CocosZ";
- export default class SceneMgr {
- private static _inst: SceneMgr;
- public static get inst(): SceneMgr {
- if (!SceneMgr._inst) {
- SceneMgr._inst = new SceneMgr();
- }
- return SceneMgr._inst;
- }
- private _activeScene: string = "";
- private _timeInterval: number = 0;
- public loadScene(name: string, onLunch: Function) {
- if (this._activeScene == name) {
- let curTime: number = (new Date()).getTime();
- if (curTime - this._timeInterval < 1000) {
- return;
- }
- }
- this._timeInterval = new Date().getTime();
- // 加载场景开始前
- this.loadBefore(name, () => {
- // 加载场景
- cc.director.loadScene(name, () => {
- this._activeScene = name;
- onLunch();
- // 加载场景完成后
- this.loadFinish(name);
- });
- });
- }
- /** 加载场景开始前 */
- loadBefore(name: string, call: Function) {
- // 显示加载动画
- if (guideLayer && guideLayer.isValid) {
- if (name == "Home") {
- guideLayer.node.zIndex = cc.macro.MAX_ZINDEX;
- guideLayer.hideFjAni();
- guideLayer.showBgAni();
- } else if (name == "Game") {
- guideLayer.node.zIndex = cc.macro.MAX_ZINDEX;
- if ([5, 7].includes(cocosz.gameMode)) {
- // 夺旗模式
- guideLayer.hideFjAni();
- guideLayer.showBgAni();
- } else {
- guideLayer.hideBgAni();
- guideLayer.showFjAni();
- }
- }
- }
- // 跳转前释放
- if (name == "Home") {
- // 逐帧释放关卡节点
- if (gameMgr && gameMgr.map && gameMgr.map.isValid) {
- let mapTs = gameMgr.map.getComponent(setMap);
- if (mapTs) {
- setTimeout(() => { mapTs.release(call) }, 100);
- return;
- }
- }
- }
- call && call();
- }
- /** 加载场景完成后 */
- loadFinish(name: string) {
- if (name == "Home") {
- // 加载动画(zindex)
- if (guideLayer && guideLayer.isValid) {
- guideLayer.node.zIndex = cc.macro.MIN_ZINDEX;
- }
- // 释放资源
- // this.releaseRes();
- }
- else if (name == "Game") {
- guideLayer.node.zIndex = cc.macro.MIN_ZINDEX;
- }
- // 刷新背景音效
- cocosz.audioMgr.playBgm();
- }
- /** 释放游戏资源 */
- releaseRes() {
- // 释放游戏音效
- let audio_game: any = [];
- cocosz.getDirWithPath("audio_game", cc.AudioClip, audio_game);
- cocosz.resMgr.releaseResArray(audio_game, cc.AudioClip);
- if (6 == cocosz.gameMode) {
- // 释放地下城音效
- let audio_zombie: any = [];
- cocosz.getDirWithPath("audio_zombie", cc.AudioClip, audio_zombie);
- cocosz.resMgr.releaseResArray(audio_zombie, cc.AudioClip);
- // 释放僵尸预制体
- let prefab_zombie: any = [];
- cocosz.getDirWithPath("prefab_zombie", cc.Prefab, prefab_zombie);
- cocosz.resMgr.releaseResArray(prefab_zombie, cc.Prefab);
- // 释放技能预制体
- let prefab_zombie_skill: any = [];
- cocosz.getDirWithPath("prefab_zombie_skill", cc.Prefab, prefab_zombie_skill);
- cocosz.resMgr.releaseResArray(prefab_zombie_skill, cc.Prefab);
- // 释放技能图片
- let tex_zombie: any = [];
- cocosz.getDirWithPath("tex_zombie", cc.SpriteFrame, tex_zombie);
- cocosz.resMgr.releaseResArray(tex_zombie, cc.SpriteFrame);
- }
- }
- }
|