LoadResUtil.ts 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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): 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. },
  49. //onComplete
  50. (err: Error = null, data: T): void => {
  51. if (!err) {
  52. resolve(data);
  53. }
  54. else {
  55. reject(err);
  56. }
  57. });
  58. });
  59. }
  60. /**
  61. * 预加载文件夹资源
  62. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  63. * @param dir 文件夹路径
  64. * @param type 资源类型(cc.Asset)
  65. * @returns Promise
  66. */
  67. public preloadDir(dir: string, type: typeof cc.Asset): Promise<any> {
  68. return new Promise<cc.AssetManager.RequestItem[]>((resolve: (data: cc.AssetManager.RequestItem[]) => void, reject) => {
  69. cc.resources.preloadDir(dir, type, //onProgress
  70. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  71. },
  72. (err: Error = null, data: cc.AssetManager.RequestItem[]): void => {
  73. if (!err) {
  74. resolve(data);
  75. }
  76. else {
  77. reject(err);
  78. }
  79. });
  80. });
  81. }
  82. /**
  83. * 加载文件夹资源
  84. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  85. * @param dir 文件夹路径
  86. * @param type 资源类型(cc.Asset)
  87. * @returns Promise
  88. */
  89. public loadDir<T extends cc.Asset>(dir: string, type: typeof cc.Asset): Promise<any> {
  90. return new Promise<T>((resolve: (data: T) => void, reject) => {
  91. cc.resources.loadDir(dir, type,
  92. //onProgress
  93. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  94. },
  95. //onComplete
  96. (err: Error = null, data: T | any): void => {
  97. if (!err) {
  98. resolve(data);
  99. }
  100. else {
  101. reject(err);
  102. }
  103. });
  104. });
  105. }
  106. /**
  107. * 加载远程资源
  108. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  109. * @param url 加载路径
  110. * @param options
  111. * @returns Promise
  112. */
  113. public loadRemote<T extends cc.Asset>(url: string, options: Record<string, any>): Promise<any> {
  114. return new Promise<T>((resolve: (data: T) => void, reject) => {
  115. cc.assetManager.loadRemote(url, options,
  116. //onComplete
  117. (err: Error = null, data: T): void => {
  118. if (!err) {
  119. resolve(data);
  120. }
  121. else {
  122. reject(err);
  123. }
  124. });
  125. });
  126. }
  127. /**
  128. * 预加载场景
  129. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  130. * @param url 加载路径
  131. * @param options
  132. * @returns Promise
  133. */
  134. public preloadScene(sceneName: string, options: Record<string, any>) {
  135. return new Promise<void>((resolve: () => void, reject) => {
  136. cc.resources.preloadScene(sceneName, options,
  137. //onProgress
  138. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  139. },
  140. //onComplete
  141. (err: Error = null): void => {
  142. if (!err) {
  143. resolve();
  144. }
  145. else {
  146. reject(err);
  147. }
  148. });
  149. });
  150. }
  151. /**
  152. * 加载场景
  153. * @description https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html
  154. * @param url 加载路径
  155. * @param options
  156. * @returns Promise
  157. */
  158. public loadScene(sceneName: string, options: Record<string, any>): Promise<any> {
  159. return new Promise<any>((resolve: (data: any) => void, reject) => {
  160. cc.resources.loadScene(sceneName, options,
  161. //onProgress
  162. (finish: number, total: number, item: cc.AssetManager.RequestItem) => {
  163. },
  164. //onComplete
  165. (err: Error = null, data: cc.SceneAsset): void => {
  166. if (!err) {
  167. resolve(data);
  168. }
  169. else {
  170. reject(err);
  171. }
  172. });
  173. });
  174. }
  175. }