LoadResUtil.ts 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /**
  2. * 加载资源工具类
  3. * @description
  4. * @author 冯聪
  5. */
  6. export default class LoadResUtil {
  7. /**
  8. * 日志标签
  9. * @description
  10. */
  11. private static _logTag = "[LoadResUtil]";
  12. /**
  13. * 预加载本地资源
  14. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  15. * @param paths 加载路径
  16. * @param type 资源类型(cc.Asset)
  17. * @returns Promise
  18. */
  19. public preload(paths: string | any, type: typeof cc.Asset): Promise<any> {
  20. return new Promise<cc.AssetManager.RequestItem[]>((resolve: (data: cc.AssetManager.RequestItem[]) => void, reject) => {
  21. cc.resources.preload(paths, type,
  22. //onProgress
  23. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  24. },
  25. //onComplete
  26. (err: Error = null, data: cc.AssetManager.RequestItem[]): void => {
  27. if (!err) {
  28. resolve(data);
  29. }
  30. else {
  31. reject(err);
  32. }
  33. });
  34. });
  35. }
  36. /**
  37. * 加载本地资源
  38. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  39. * @param paths 加载路径
  40. * @param type 资源类型(cc.Asset)
  41. * @returns Promise
  42. */
  43. public load<T extends cc.Asset>(paths: string | any, type: typeof cc.Asset, callBack = null): Promise<any> {
  44. return new Promise<T>((resolve: (data: T) => void, reject) => {
  45. cc.resources.load(paths, type,
  46. //onProgress
  47. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  48. if (callBack) {
  49. let per = finish / total;
  50. callBack(per * 100);
  51. }
  52. },
  53. //onComplete
  54. (err: Error = null, data: T): void => {
  55. if (!err) {
  56. resolve(data);
  57. }
  58. else {
  59. reject(err);
  60. }
  61. });
  62. });
  63. }
  64. /**
  65. * 预加载文件夹资源
  66. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  67. * @param dir 文件夹路径
  68. * @param type 资源类型(cc.Asset)
  69. * @returns Promise
  70. */
  71. public preloadDir(dir: string, type: typeof cc.Asset): Promise<any> {
  72. return new Promise<cc.AssetManager.RequestItem[]>((resolve: (data: cc.AssetManager.RequestItem[]) => void, reject) => {
  73. cc.resources.preloadDir(dir, type, //onProgress
  74. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  75. },
  76. (err: Error = null, data: cc.AssetManager.RequestItem[]): void => {
  77. if (!err) {
  78. resolve(data);
  79. }
  80. else {
  81. reject(err);
  82. }
  83. });
  84. });
  85. }
  86. /**
  87. * 加载文件夹资源
  88. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  89. * @param dir 文件夹路径
  90. * @param type 资源类型(cc.Asset)
  91. * @returns Promise
  92. */
  93. public loadDir<T extends cc.Asset>(dir: string, type: typeof cc.Asset): Promise<any> {
  94. return new Promise<T>((resolve: (data: T) => void, reject) => {
  95. cc.resources.loadDir(dir, type,
  96. //onProgress
  97. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  98. },
  99. //onComplete
  100. (err: Error = null, data: T | any): void => {
  101. if (!err) {
  102. resolve(data);
  103. }
  104. else {
  105. reject(err);
  106. }
  107. });
  108. });
  109. }
  110. /**
  111. * 加载远程资源
  112. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  113. * @param url 加载路径
  114. * @param options
  115. * @returns Promise
  116. */
  117. public loadRemote<T extends cc.Asset>(url: string, options: Record<string, any>): Promise<any> {
  118. return new Promise<T>((resolve: (data: T) => void, reject) => {
  119. cc.assetManager.loadRemote(url, options,
  120. //onComplete
  121. (err: Error = null, data: T): void => {
  122. if (!err) {
  123. resolve(data);
  124. }
  125. else {
  126. reject(err);
  127. }
  128. });
  129. });
  130. }
  131. /**
  132. * 预加载场景
  133. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  134. * @param url 加载路径
  135. * @param options
  136. * @returns Promise
  137. */
  138. public preloadScene(sceneName: string, options: Record<string, any>) {
  139. return new Promise<void>((resolve: () => void, reject) => {
  140. cc.resources.preloadScene(sceneName, options,
  141. //onProgress
  142. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  143. },
  144. //onComplete
  145. (err: Error = null): void => {
  146. if (!err) {
  147. resolve();
  148. }
  149. else {
  150. reject(err);
  151. }
  152. });
  153. });
  154. }
  155. /**
  156. * 加载场景
  157. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  158. * @param url 加载路径
  159. * @param options
  160. * @returns Promise
  161. */
  162. public loadScene(sceneName: string, options: Record<string, any>): Promise<any> {
  163. return new Promise<any>((resolve: (data: any) => void, reject) => {
  164. cc.resources.loadScene(sceneName, options,
  165. //onProgress
  166. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  167. },
  168. //onComplete
  169. (err: Error = null, data: cc.SceneAsset): void => {
  170. if (!err) {
  171. resolve(data);
  172. }
  173. else {
  174. reject(err);
  175. }
  176. });
  177. });
  178. }
  179. }