imageCacheManager.ts 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import { _decorator, Component, Node, SpriteFrame } from 'cc';
  2. import { tools } from '../tools';
  3. const { ccclass, property } = _decorator;
  4. export class img_data{
  5. public id:number = 0;
  6. public url:string = "";
  7. constructor(id,url){
  8. this.id = id
  9. this.url = url
  10. }
  11. }
  12. @ccclass('imageCacheManager')
  13. export class imageCacheManager {
  14. private static game_car_map:Map<number,SpriteFrame> = new Map
  15. private static home_car_map:Map<number,SpriteFrame> = new Map
  16. private static rank_car_map:Map<number,SpriteFrame> = new Map
  17. public static start_cache(cb){
  18. let game_car_list:img_data[]=[]
  19. let home_car_list:img_data[]=[]
  20. let rank_car_list:img_data[]=[]
  21. let count = 3
  22. let num = 0
  23. let call_back = ()=>{
  24. num++;
  25. if(num>=count){
  26. cb()
  27. }
  28. }
  29. for (let index = 0; index < tools.all_car_list.length; index++) {
  30. const element = tools.all_car_list[index];
  31. game_car_list.push(new img_data(element.id,element.cover))
  32. home_car_list.push(new img_data(element.id,element.home_cover))
  33. rank_car_list.push(new img_data(element.id,element.ranking_cover))
  34. }
  35. imageCacheManager.cache_game_car(game_car_list,call_back)
  36. imageCacheManager.cache_home_car(home_car_list,call_back)
  37. imageCacheManager.cache_rank_car(rank_car_list,call_back)
  38. }
  39. public static cache_game_car(list:img_data[],finish_cb){ //游戏中图
  40. let count = list.length
  41. let num = 0
  42. let cb = (data)=>{
  43. num++;
  44. imageCacheManager.game_car_map.set(data.tag,data.sf)
  45. if(num>=count){
  46. finish_cb()
  47. }
  48. }
  49. for (let index = 0; index < count; index++) {
  50. tools.loadRemoteImg(list[index].url,cb,list[index].id)
  51. }
  52. }
  53. public static cache_home_car(list:img_data[],finish_cb){ // 主页图
  54. let count = list.length
  55. let num = 0
  56. let cb = (data)=>{
  57. num++;
  58. imageCacheManager.home_car_map.set(data.tag,data.sf)
  59. if(num>=count){
  60. finish_cb()
  61. }
  62. }
  63. for (let index = 0; index < count; index++) {
  64. tools.loadRemoteImg(list[index].url,cb,list[index].id)
  65. }
  66. }
  67. public static cache_rank_car(list:img_data[],finish_cb){ // 排行图
  68. let count = list.length
  69. let num = 0
  70. let cb = (data)=>{
  71. num++;
  72. imageCacheManager.rank_car_map.set(data.tag,data.sf)
  73. if(num>=count){
  74. finish_cb()
  75. }
  76. }
  77. for (let index = 0; index < count; index++) {
  78. tools.loadRemoteImg(list[index].url,cb,list[index].id)
  79. }
  80. }
  81. public static getRankCarImageById(id:number){
  82. return imageCacheManager.rank_car_map.get(id)
  83. }
  84. public static getHomeCarImageById(id:number){
  85. return imageCacheManager.home_car_map.get(id)
  86. }
  87. public static getGameCarImageById(id:number){
  88. return imageCacheManager.game_car_map.get(id)
  89. }
  90. }