layerManager.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { find, instantiate, Node, Prefab } from "cc";
  2. import { BaseLayer } from "../../common/BaseLayer";
  3. import { constants } from "../data/constants";
  4. import { resManager } from "./resManager";
  5. export class layerManager {
  6. private static _instance: layerManager;
  7. private constructor() { }
  8. public static get instance(): layerManager {
  9. if (!this._instance) {
  10. this._instance = new layerManager();
  11. }
  12. return this._instance;
  13. }
  14. layer1: Node;
  15. layerHint: Node;
  16. loadLayers(onProgress?: Function, onComplete?: Function) {
  17. let arr = [
  18. constants.layers.StartLayer.path,
  19. constants.layers.LevelLayer.path,
  20. ];
  21. resManager.instance.loadAssetByPathArr(constants.bundles.common.name, arr, Prefab, onProgress, onComplete);
  22. }
  23. init(layer1: Node, layerHint: Node) {
  24. this.layer1 = layer1;
  25. this.layerHint = layerHint;
  26. }
  27. createNotice(content) {
  28. // 显示一条提示信息
  29. let noticeLayer = find(constants.layers.NoticeLayer.name, this.layerHint);
  30. if (noticeLayer) {
  31. noticeLayer.getComponent(constants.layers.NoticeLayer.name).createNotice(content);
  32. }
  33. }
  34. openLayer(layer: any, obj?: any, cb?: Function) {
  35. resManager.instance.loadAsset(layer.bundle, layer.path, Prefab, null, (err, prefab) => {
  36. if (err) {
  37. console.log("LayerManager.openLayer error:" + err.message, layer, err);
  38. return;
  39. }
  40. let name = layer.name;
  41. let node = instantiate(prefab);
  42. let com = node.addComponent(name);
  43. com.obj = obj;
  44. com.cb = cb;
  45. com.layerName = name;
  46. if (layer.name == constants.layers.NoticeLayer.name) {
  47. node.parent = this.layerHint;
  48. } else {
  49. node.parent = this.layer1;
  50. }
  51. console.log("openLayer " + name, obj);
  52. });
  53. }
  54. closeLayer(layer: BaseLayer) {
  55. let layerName = layer.layerName;
  56. layer.node.destroy();
  57. }
  58. }