LoadResUtil.ts 6.5 KB

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