HeadPrefab.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. //第一次加载 或 加载完成直接使用
  41. if(this.m_bForceUpdare || g_GlobalUserInfo.m_UserHeadMap[UserID] == null){
  42. g_GlobalUserInfo.m_UserHeadMap[UserID] = 'Loading';
  43. this.SetHeadUrl(g_GlobalUserInfo.m_UserInfoMap[UserID].HeadUrl, UserID);
  44. } else {
  45. this.HeadLoadFinish();
  46. }
  47. },
  48. HeadLoadFinish:function(){
  49. this.m_headSprite.spriteFrame = g_GlobalUserInfo.m_UserHeadMap[this.m_CheckUserID];
  50. var size = new cc.size(this.m_defSize.width,this.m_defSize.height)
  51. this.node.setContentSize(size);
  52. this.m_CheckUserID = null;
  53. if(this.m_Hook && this.m_Hook.OnHeadFinish) this.m_Hook.OnHeadFinish();
  54. },
  55. SetHeadUrl :function(szUrl, UserID){
  56. if(szUrl==undefined) return false;
  57. if( szUrl != null && szUrl != undefined && szUrl != "" ){//&& !cc.sys.isNative
  58. var name = szUrl.substring(szUrl.lastIndexOf("/")+1)
  59. if( name.indexOf(".") < 0) szUrl += "?"+name+".jpg"
  60. }
  61. this.m_url = szUrl;
  62. this.m_checkCnt = 0;
  63. this.DownLoadHead(UserID);
  64. return true;
  65. },
  66. //加载头像
  67. DownLoadHead:function(UserID, bNoSkip){
  68. var szUrl = window.PHP_HOME+'/HeadImage.php?url='+this.m_url;
  69. // if(bNoSkip) szUrl = this.m_url;
  70. // if(cc.sys.localStorage.getItem(AndroidBUG)) this.m_url = this.m_url.replace('https','http');
  71. if(this.m_url.indexOf('https') >= 0) szUrl = this.m_url;
  72. cc.loader.load({'url':szUrl, type: 'jpg'}, function(err, texture){
  73. if(err) return this.OnLoadErr(err, UserID);
  74. g_GlobalUserInfo.m_UserHeadMap[UserID] = new cc.SpriteFrame(texture);
  75. if(UserID == this.m_CheckUserID) this.HeadLoadFinish();
  76. }.bind(this));
  77. },
  78. OnLoadErr:function(err, UserID){
  79. try {
  80. if(window.LOG_NET_DATA)console.log("head OnLoadErr:"+this.m_checkCnt +" :"+this.m_url+" err:"+err);
  81. } catch (error) {}
  82. //android 5.0 加载https 失败
  83. if(this.m_url.indexOf('https') >= 0) cc.sys.localStorage.setItem(AndroidBUG, 1);
  84. this.m_checkCnt++;
  85. //if(this.m_checkCnt++ < 2){
  86. this.DownLoadHead(UserID, (this.m_checkCnt%2 == 0));
  87. /*}else{
  88. g_GlobalUserInfo.m_UserHeadMap[UserID] = 'err';
  89. if(UserID == this.m_CheckUserID) {
  90. this.m_CheckUserID = null;
  91. if(this.m_Hook) this.m_Hook.OnHeadErr();
  92. }
  93. }*/
  94. },
  95. });