import GameLogic from "../gameLogic/gameLogic"; import bundleManager from "./bundleManager"; class levelManager { private _levelPrefab: cc.Node = null; private _curOpenID: number; remove() { if (this._levelPrefab) { // this._levelPrefab.destroy(); // this._levelPrefab = null this._levelPrefab.active = false; } } open(id: number, callback?: Function, new_ = false) { console.log('zh:LM.ts open 1' ) if (this._levelPrefab && this._curOpenID == id && !new_) { this._levelPrefab.active = true; callback && callback(); return; } let self = this; self.saveCurOpenID(id); console.log('zh:LM.ts open 2' ) let bundleName = this.getBundleNameByLevel(id); setTimeout(() => { console.log('zh:LM.ts open 3,level=',id,bundleName ) bundleManager.getBundleByName(bundleName).load('level' + id, cc.Prefab, function (err, prefab: cc.Prefab) { if (prefab) { let node = cc.instantiate(prefab); var cavans = cc.director.getScene().getChildByName('world') node.parent = cavans; // node.zIndex = 200 // self.remove(); self._levelPrefab && self._levelPrefab.destroy(); self._levelPrefab = node; cavans.getComponent(GameLogic).init(node,new_); if (callback) { callback(node); } } }) }, 50); } private getBundleNameByLevel(level) { if (level <= 2) { return 'levels' } else { return 'level' + level; } } preLoadLevel(level: number) { console.log('zh:预加载关卡 level=' + level); bundleManager.getBundleByName('levels').preload('level' + level, cc.Prefab, () => { console.log('预加载关卡' + level + '完成'); }); } /** * 保存当前打开的关卡ID * @param id 关卡ID */ saveCurOpenID(id: number) { this._curOpenID = id; } /** * * @returns 获取当前打开的关卡ID */ getCurOpenId() { return this._curOpenID; } } export default new levelManager();