Tools.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import { _decorator, Component, Node, SpriteFrame, assetManager, Texture2D, Sprite, ImageAsset, isValid } from 'cc';
  2. import { Constant } from './constant';
  3. import GBoardChess from './Game/ChessGame/GBoardChess';
  4. const { ccclass, property } = _decorator;
  5. @ccclass('Tools')
  6. export class Tools {
  7. public static cache: { [name: string]: SpriteFrame } = {};
  8. public static time(m){
  9. if(m<60){
  10. return m+"秒"
  11. }else{
  12. return m/60+"分"
  13. }
  14. }
  15. public static ms_time(s){
  16. var n_s = Math.floor(s/60)
  17. if(n_s<0){
  18. n_s = 0;
  19. }
  20. var n_s_str = n_s.toString()
  21. var n_m = s%60
  22. if(n_m<0){
  23. n_m = 0;
  24. }
  25. var n_m_str = n_m.toString()
  26. if(n_s<10&&n_s>=0){
  27. n_s_str = "0"+n_s
  28. }
  29. if(n_m<10&&n_m>=0){
  30. n_m_str = "0"+n_m
  31. }
  32. return n_s_str+":"+n_m_str
  33. }
  34. public static makeUrl(){
  35. return "ws://"+Constant.SEVER_INFO.IP+":"+Constant.SEVER_INFO.PORT+"/ws"
  36. }
  37. public static loadWeiXinHead(avatarurl:string,sf:Sprite){
  38. if(Tools.cache[avatarurl]!=null){
  39. sf.spriteFrame = Tools.cache[avatarurl]
  40. return
  41. }
  42. let obj = null;
  43. if(avatarurl.substring(avatarurl.length-3,avatarurl.length)!="png"){
  44. obj= {ext: '.png'}
  45. }
  46. assetManager.loadRemote<ImageAsset>(avatarurl,obj, (err, imageAsset) => {
  47. if (!err && imageAsset) {
  48. let spFrame = Tools.cache[avatarurl];
  49. if (!spFrame) {
  50. const texture = new Texture2D();
  51. texture.image = imageAsset;
  52. spFrame = new SpriteFrame();
  53. spFrame.texture = texture;
  54. imageAsset.addRef();
  55. Tools.cache[avatarurl] = spFrame; // 添加映射表记录
  56. sf.spriteFrame = spFrame
  57. }
  58. spFrame.addRef(); // 计数加1
  59. }
  60. });
  61. }
  62. releaseRemoteSprite(node: Node) {
  63. if (!isValid(node)) {
  64. return;
  65. }
  66. const sp = node.getComponent(Sprite) as Sprite;
  67. if (sp && sp.spriteFrame) {
  68. const spFrame = sp.spriteFrame;
  69. sp.spriteFrame.decRef(false); // 只把计数减1
  70. sp.spriteFrame = null;
  71. if (spFrame.refCount <= 0) {
  72. let texture = spFrame.texture as Texture2D;
  73. // 如果已加入动态合图,必须取原始的Texture2D
  74. if (spFrame.packable) {
  75. texture = spFrame.original?._texture as Texture2D;
  76. }
  77. if (texture) {
  78. delete Tools.cache[texture.image!._nativeUrl]; // 删除映射表记录
  79. texture.image?.decRef();
  80. texture.destroy();
  81. }
  82. spFrame.destroy();
  83. }
  84. }
  85. }
  86. public static getAvatarByIndex(index:number):string{
  87. if(index<=14&&index>0){
  88. return "PubImgs_avatar_avatar"+index;
  89. }
  90. return "PubImgs_avatar_avatar1";
  91. }
  92. public static getChessPos(){
  93. let tempArray = []
  94. let temp_Array = []
  95. for (const key in GBoardChess.instance.pos.squares) {
  96. if(GBoardChess.instance.pos.squares[key]!=0){
  97. tempArray.push({"sq": key,"pc":GBoardChess.instance.pos.squares[key],"x":0,"y":0})
  98. }
  99. }
  100. for (let index = 0; index < tempArray.length; index++) {
  101. const element = tempArray[index];
  102. var node__ = GBoardChess.instance.imgSquares[GBoardChess.instance.flipped(element.sq)];
  103. element.x = node__.position.x
  104. element.y = node__.position.y
  105. temp_Array.push(element)
  106. }
  107. return temp_Array
  108. }
  109. }