ResourcesUtils.ts 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import { Asset, assetManager, AssetManager, Component, Node, resources, SceneAsset, __private } from "cc";
  2. /**
  3. * 资源工具,resources的api全部await化
  4. * @deprecated 已废弃,请使用ResourceLoader组件
  5. * @author 袁浩
  6. */
  7. export class ResourcesUtils {
  8. /**
  9. * 加载本地资源,使用说明见resources.load
  10. * @returns await 加载成功后返回的数据
  11. */
  12. public static load<T extends Asset>(paths: string | any, type: __private.cocos_core_asset_manager_shared_AssetType, component: Component | Node, onProgress: __private.cocos_core_asset_manager_shared_ProgressCallback = null) {
  13. return new Promise<T>((resolve: (data: T) => void, reject) => {
  14. resources.load(paths, type, onProgress, (err: Error = null, data: T): void => {
  15. if (!err) {
  16. if (component && !component.isValid) {
  17. return;
  18. }
  19. resolve(data);
  20. }
  21. else {
  22. reject(err);
  23. }
  24. });
  25. });
  26. }
  27. /**
  28. * 加载远程资源,使用说明见assetManager.loadRemote
  29. * @returns await 加载成功后返回的数据
  30. */
  31. public static loadRemote<T extends Asset>(url: string, options: __private.cocos_core_asset_manager_shared_IRemoteOptions, component: Component, onComplete?: __private.cocos_core_asset_manager_shared_CompleteCallbackWithData<T> | null) {
  32. return new Promise<T>((resolve: (data: T) => void, reject) => {
  33. assetManager.loadRemote(url, options, (err: Error = null, data: T): void => {
  34. if (!err) {
  35. if (component && !component.isValid) {
  36. return;
  37. }
  38. resolve(data);
  39. }
  40. else {
  41. reject(err);
  42. }
  43. });
  44. });
  45. }
  46. /**
  47. * 使用说明见resources.preload
  48. * @returns await 加载成功后返回的数据
  49. */
  50. public static preload(paths: string | any, type: __private.cocos_core_asset_manager_shared_AssetType = null, onProgress: __private.cocos_core_asset_manager_shared_ProgressCallback = null) {
  51. return new Promise<AssetManager.RequestItem[]>((resolve: (data: AssetManager.RequestItem[]) => void, reject) => {
  52. resources.preload(paths, type, onProgress, (err: Error = null, data: AssetManager.RequestItem[]): void => {
  53. if (!err) {
  54. resolve(data);
  55. }
  56. else {
  57. reject(err);
  58. }
  59. });
  60. });
  61. }
  62. /**
  63. * 使用说明见resources.loadDir
  64. * @returns await 加载成功后返回的数据
  65. */
  66. public static loadDir<T extends Asset>(dir: string, type: __private.cocos_core_asset_manager_shared_AssetType<T> = null, onProgress: __private.cocos_core_asset_manager_shared_ProgressCallback = null) {
  67. return new Promise<T>((resolve: (data: T) => void, reject) => {
  68. resources.loadDir(dir, type, onProgress, (err: Error = null, data: T | any): void => {
  69. if (!err) {
  70. resolve(data);
  71. }
  72. else {
  73. reject(err);
  74. }
  75. });
  76. });
  77. }
  78. /**
  79. * 使用说明见resources.preloadDir
  80. * @returns await 加载成功后返回的数据
  81. */
  82. public static preloadDir(dir: string, type: __private.cocos_core_asset_manager_shared_AssetType = null, onProgress: __private.cocos_core_asset_manager_shared_ProgressCallback = null) {
  83. return new Promise<AssetManager.RequestItem[]>((resolve: (data: AssetManager.RequestItem[]) => void, reject) => {
  84. resources.preloadDir(dir, type, onProgress, (err: Error = null, data: AssetManager.RequestItem[]): void => {
  85. if (!err) {
  86. resolve(data);
  87. }
  88. else {
  89. reject(err);
  90. }
  91. });
  92. });
  93. }
  94. /**
  95. * 使用说明见resources.loadScene
  96. * @returns await 加载成功后返回的数据
  97. */
  98. public static loadScene(sceneName: string, options: __private.cocos_core_asset_manager_shared_IAssetOptions = null, onProgress: __private.cocos_core_asset_manager_shared_ProgressCallback = null) {
  99. return new Promise<any>((resolve: (data: any) => void, reject) => {
  100. resources.loadScene(sceneName, options, onProgress, (err: Error = null, data: SceneAsset): void => {
  101. if (!err) {
  102. resolve(data);
  103. }
  104. else {
  105. reject(err);
  106. }
  107. });
  108. });
  109. }
  110. /**
  111. * 使用说明见resources.preloadScene
  112. * @returns await 加载成功后返回的数据
  113. */
  114. public preloadScene(sceneName: string, options: __private.cocos_core_asset_manager_shared_IAssetOptions = null, onProgress: __private.cocos_core_asset_manager_shared_ProgressCallback) {
  115. return new Promise<void>((resolve: () => void, reject) => {
  116. resources.preloadScene(sceneName, options, onProgress, (err: Error = null): void => {
  117. if (!err) {
  118. resolve();
  119. }
  120. else {
  121. reject(err);
  122. }
  123. });
  124. });
  125. }
  126. }