HeadPrefab.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. cc.Class
  2. ({
  3. extends: cc.BaseClass,
  4. properties: {
  5. },
  6. onLoad:function() {
  7. },
  8. SetHook:function(Hook) {
  9. this.m_Hook = Hook;
  10. },
  11. InitDefault:function(){
  12. if(this.m_headSprite == null) this.m_headSprite = this.node.getComponent(cc.Sprite);
  13. //保存初始图片和尺寸
  14. if(this.m_defFrame == null) this.m_defFrame = this.m_headSprite.spriteFrame;
  15. if(this.m_defSize == null) this.m_defSize = this.node.getContentSize();
  16. //还原默认图片
  17. this.m_headSprite.spriteFrame = this.m_defFrame;
  18. },
  19. update:function(){
  20. if(this.m_CheckUserID == null) return;
  21. this.GetUserHead(this.m_CheckUserID);
  22. },
  23. SetUserHead:function(dwUserID, bForceUpdare){
  24. this.m_bForceUpdare = bForceUpdare;
  25. this.InitDefault();
  26. if(dwUserID == null) return;
  27. this.m_CheckUserID = dwUserID;
  28. this.m_CheckCnt = 0;
  29. return true;
  30. },
  31. GetUserHead:function(UserID){
  32. //加载中
  33. if( g_GlobalUserInfo.m_UserHeadMap[UserID] == 'Loading') return;
  34. //无效URL 或 加载异常
  35. // if( g_GlobalUserInfo.m_UserHeadMap[UserID] == 'err' && this.m_Hook) this.m_Hook.OnHeadErr();
  36. // if( g_GlobalUserInfo.m_UserInfoMap[UserID].HeadUrl == '' || g_GlobalUserInfo.m_UserHeadMap[UserID] == 'err') {
  37. // this.m_CheckUserID = null;
  38. // return;
  39. // }
  40. if( g_GlobalUserInfo.m_UserHeadMap[UserID] == 'err') {
  41. this.m_Hook && this.m_Hook.OnHeadErr();
  42. this.m_CheckUserID = null;
  43. return;
  44. }
  45. let headURL = g_GlobalUserInfo.m_UserInfoMap[UserID].HeadUrl;
  46. console.log("headURL",headURL)
  47. if(!headURL||headURL == '' || !headURL.includes(window.PHP_HOME)) {
  48. let self = this;
  49. cc.resources.load(`Image/Head/head_default${window.PLATFORM_ID}`, cc.SpriteFrame, function (err, sprFrame) {
  50. if (err) {
  51. cc.error(err);
  52. return;
  53. }
  54. g_GlobalUserInfo.m_UserHeadMap[UserID] = sprFrame;
  55. self.HeadLoadFinish();
  56. });
  57. return;
  58. }
  59. //第一次加载 或 加载完成直接使用
  60. if(this.m_bForceUpdare || g_GlobalUserInfo.m_UserHeadMap[UserID] == null){
  61. g_GlobalUserInfo.m_UserHeadMap[UserID] = 'Loading';
  62. this.SetHeadUrl(headURL, UserID);
  63. } else {
  64. this.HeadLoadFinish();
  65. }
  66. },
  67. HeadLoadFinish:function(){
  68. this.m_headSprite.spriteFrame = g_GlobalUserInfo.m_UserHeadMap[this.m_CheckUserID];
  69. var size = new cc.size(this.m_defSize.width,this.m_defSize.height)
  70. this.node.setContentSize(size);
  71. this.m_CheckUserID = null;
  72. if(this.m_Hook && this.m_Hook.OnHeadFinish) this.m_Hook.OnHeadFinish();
  73. },
  74. SetHeadUrl :function(szUrl, UserID){
  75. if(szUrl==undefined) return false;
  76. if( szUrl != null && szUrl != undefined && szUrl != "" ){//&& !cc.sys.isNative
  77. var name = szUrl.substring(szUrl.lastIndexOf("/")+1)
  78. if( name.indexOf(".") < 0) szUrl += "?"+name+".jpg"
  79. }
  80. this.m_url = szUrl;
  81. this.m_checkCnt = 0;
  82. this.DownLoadHead(UserID);
  83. return true;
  84. },
  85. //加载头像
  86. DownLoadHead:function(UserID, bNoSkip){
  87. var szUrl = window.PHP_HOME+'/HeadImage.php?url='+this.m_url + 'jpg';
  88. // if(bNoSkip) szUrl = this.m_url;
  89. // if(cc.sys.localStorage.getItem(AndroidBUG)) this.m_url = this.m_url.replace('https','http');
  90. if(this.m_url.indexOf('https') >= 0) szUrl = this.m_url;
  91. cc.assetManager.loadRemote(szUrl, function(err, texture){
  92. if(err) return this.OnLoadErr(err, UserID);
  93. g_GlobalUserInfo.m_UserHeadMap[UserID] = new cc.SpriteFrame(texture);
  94. if(UserID == this.m_CheckUserID) this.HeadLoadFinish();
  95. }.bind(this));
  96. },
  97. OnLoadErr:function(err, UserID){
  98. try {
  99. if(window.LOG_NET_DATA)console.log("head OnLoadErr:"+this.m_checkCnt +" :"+this.m_url+" err:"+err);
  100. } catch (error) {}
  101. //android 5.0 加载https 失败
  102. if(this.m_url.indexOf('https') >= 0) cc.sys.localStorage.setItem(AndroidBUG, 1);
  103. this.m_checkCnt++;
  104. //if(this.m_checkCnt++ < 2){
  105. this.DownLoadHead(UserID, (this.m_checkCnt%2 == 0));
  106. /*}else{
  107. g_GlobalUserInfo.m_UserHeadMap[UserID] = 'err';
  108. if(UserID == this.m_CheckUserID) {
  109. this.m_CheckUserID = null;
  110. if(this.m_Hook) this.m_Hook.OnHeadErr();
  111. }
  112. }*/
  113. },
  114. });