LoadingLayer.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. import { assetManager, Node, ProgressBar, TextAsset, _decorator } from 'cc';
  2. import { BaseLayer } from '../../common/BaseLayer';
  3. import { constants } from '../data/constants';
  4. import { audioManager } from '../manager/audioManager';
  5. import { designManager } from '../manager/designManager';
  6. import { iconManager } from '../manager/iconManager';
  7. import { layerManager } from '../manager/layerManager';
  8. import { levelManager } from '../manager/levelManager';
  9. import { resManager } from '../manager/resManager';
  10. import { sdkManager } from '../manager/sdkManager';
  11. import { playerModel } from '../model/playerModel';
  12. const { ccclass, property } = _decorator;
  13. @ccclass('LoadingLayer')
  14. export class LoadingLayer extends BaseLayer {
  15. progressBar: ProgressBar;
  16. progress: number = 0;
  17. percentNode: Node;
  18. flagNode: Node;
  19. progressLength: number = 500;
  20. startGap: number = 250;
  21. designResProgress: number = 0;
  22. designResPercent: number = 0.3;
  23. audioResProgress: number = 0;
  24. audioResPercent: number = 0.3;
  25. commonResLayerProgress: number = 0;
  26. commonResLayerPercent: number = 0.1;
  27. commonResIconProgress: number = 0;
  28. commonResIconPercent: number = 0.1;
  29. commonResLevelProgress: number = 0;
  30. commonResLevelPercent: number = 0.2;
  31. onLoad() {
  32. sdkManager.instance.init(()=>{
  33. sdkManager.instance.sendEvent("进入加载页");
  34. });
  35. super.onLoad();
  36. this.percentNode = this.getNodeByPath("progressBar/percent");
  37. this.setString(this.percentNode, "0%");
  38. this.progressBar = this.getNodeByPath("progressBar").getComponent(ProgressBar);
  39. this.setProgressBar(this.progressBar, this.progress);
  40. this.flagNode = this.getNodeByPath("progressBar/flag");
  41. let pos = this.flagNode.getPosition();
  42. pos.x = -this.startGap;
  43. this.flagNode.setPosition(pos);
  44. }
  45. onEnable() {
  46. this.loadDesignRes();
  47. this.loadAudioRes();
  48. assetManager.loadBundle(constants.bundles.common.name, (err, retBundle) => {
  49. this.loadCommonIconRes();
  50. this.loadCommonLevelRes();
  51. this.loadCommonLayerRes();
  52. });
  53. }
  54. onDisable() {
  55. }
  56. loadAudioRes() {
  57. // 加载音频
  58. audioManager.instance.loadAudio((finish: number, total: number) => {
  59. this.audioResProgress = finish / total;
  60. }, () => {
  61. this.audioResProgress = 1;
  62. });
  63. }
  64. loadDesignRes() {
  65. // 加载策划表格数据
  66. resManager.instance.loadAssetByBundleDir(constants.bundles.design.name, constants.bundles.design.dir.common, TextAsset,
  67. (finish: number, total: number, item: any) => {
  68. this.designResProgress = finish / total;
  69. }, (assetArr) => {
  70. this.designResProgress = 1;
  71. for (let i in assetArr) {
  72. let asset = assetArr[i];
  73. designManager.instance.initTable(asset.name, asset.text.split("\n"));
  74. resManager.instance.releaseAsset(asset);
  75. }
  76. }
  77. );
  78. }
  79. loadCommonLayerRes() {
  80. // 加载layer资源
  81. layerManager.instance.loadLayers((finish: number, total: number) => {
  82. this.commonResLayerProgress = finish / total;
  83. }, () => {
  84. this.commonResLayerProgress = 1;
  85. });
  86. }
  87. loadCommonIconRes() {
  88. // 加载需要动态替换的图标资源
  89. iconManager.instance.loadAllIcons((finish: number, total: number, item: any) => {
  90. this.commonResIconProgress = finish / total;
  91. }, () => {
  92. this.commonResIconProgress = 1;
  93. });
  94. }
  95. loadCommonLevelRes() {
  96. // 加载当前关卡数据
  97. levelManager.instance.loadLevel(playerModel.instance.getLevel(), (finish, total) => {
  98. this.commonResLevelProgress = finish / total;
  99. }, () => {
  100. this.commonResLevelProgress = 1;
  101. });
  102. }
  103. openStartLayer() {
  104. // 额外加载
  105. // skillManager.instance.loadAllSkillEffect();
  106. this.openLayer(constants.layers.StartLayer);
  107. this.closeLayer();
  108. }
  109. onButtonClick(node: Node, name: String) {
  110. switch (name) {
  111. default:
  112. break;
  113. }
  114. }
  115. update() {
  116. let progress = this.designResProgress * this.designResPercent
  117. + this.audioResProgress * this.audioResPercent
  118. + this.commonResLayerProgress * this.commonResLayerPercent
  119. + this.commonResIconProgress * this.commonResIconPercent
  120. + this.commonResLevelProgress * this.commonResLevelPercent;
  121. if (progress > this.progressBar.progress) {
  122. this.setProgressBar(this.progressBar, progress);
  123. this.setString(this.percentNode, Math.ceil(progress * 100) + "%");
  124. let pos = this.flagNode.getPosition();
  125. pos.x = progress * this.progressLength - this.startGap;
  126. this.flagNode.setPosition(pos);
  127. }
  128. if (progress >= 1) {
  129. this.openStartLayer();
  130. }
  131. }
  132. }