imageCacheManager.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. private static car_name_map:Map<number,string> = new Map
  18. public static start_cache(cb){
  19. let game_car_list:img_data[]=[]
  20. let home_car_list:img_data[]=[]
  21. let rank_car_list:img_data[]=[]
  22. let count = 3
  23. let num = 0
  24. let call_back = ()=>{
  25. num++;
  26. if(num>=count){
  27. cb()
  28. }
  29. }
  30. for (let index = 0; index < tools.all_car_list.length; index++) {
  31. const element = tools.all_car_list[index];
  32. game_car_list.push(new img_data(element.id,element.cover))
  33. home_car_list.push(new img_data(element.id,element.home_cover))
  34. rank_car_list.push(new img_data(element.id,element.ranking_cover))
  35. imageCacheManager.car_name_map.set(element.id, element.name)
  36. }
  37. imageCacheManager.cache_game_car(game_car_list,call_back)
  38. imageCacheManager.cache_home_car(home_car_list,call_back)
  39. imageCacheManager.cache_rank_car(rank_car_list,call_back)
  40. }
  41. public static cache_game_car(list:img_data[],finish_cb){ //游戏中图
  42. let count = list.length
  43. let num = 0
  44. let cb = (data)=>{
  45. num++;
  46. imageCacheManager.game_car_map.set(data.tag,data.sf)
  47. if(num>=count){
  48. finish_cb()
  49. }
  50. }
  51. for (let index = 0; index < count; index++) {
  52. tools.loadRemoteImg(list[index].url,cb,list[index].id)
  53. }
  54. }
  55. public static cache_home_car(list:img_data[],finish_cb){ // 主页图
  56. let count = list.length
  57. let num = 0
  58. let cb = (data)=>{
  59. num++;
  60. imageCacheManager.home_car_map.set(data.tag,data.sf)
  61. if(num>=count){
  62. finish_cb()
  63. }
  64. }
  65. for (let index = 0; index < count; index++) {
  66. tools.loadRemoteImg(list[index].url,cb,list[index].id)
  67. }
  68. }
  69. public static cache_rank_car(list:img_data[],finish_cb){ // 排行图
  70. let count = list.length
  71. let num = 0
  72. let cb = (data)=>{
  73. num++;
  74. imageCacheManager.rank_car_map.set(data.tag,data.sf)
  75. if(num>=count){
  76. finish_cb()
  77. }
  78. }
  79. for (let index = 0; index < count; index++) {
  80. tools.loadRemoteImg(list[index].url,cb,list[index].id)
  81. }
  82. }
  83. public static getRankCarImageById(id:number){
  84. return imageCacheManager.rank_car_map.get(id)
  85. }
  86. public static getHomeCarImageById(id:number){
  87. return imageCacheManager.home_car_map.get(id)
  88. }
  89. public static getGameCarImageById(id:number){
  90. return imageCacheManager.game_car_map.get(id)
  91. }
  92. public static getCarNameById(id:number) {
  93. return imageCacheManager.car_name_map.get(id)
  94. }
  95. }