SettingGenderToggle.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. cc.Class({
  2. extends: cc.BaseClass,
  3. properties: {
  4. m_GenderToggleContainer: cc.ToggleContainer, // 性别切换容器
  5. //缓存节点引用
  6. m_toggleNodes: [], // 缓存 Toggle 节点引用
  7. m_genderIndex: null, // 缓存当前选中的性别索引
  8. },
  9. onLoad: function () {
  10. this.m_toggleNodes = [];
  11. for (var i = 0; i < 2; i++) {
  12. var toggleNode = this.$(`layout/${i}`)//获取两个节点
  13. if (toggleNode) {
  14. this.m_toggleNodes.push(toggleNode);//将节点添加到数组中
  15. toggleNode.on('toggle', this.onTogClicked, this);//为节点添加点击事件监听
  16. }
  17. }
  18. },
  19. start: function () {
  20. try {
  21. if (window.g_GlobalUserInfo) {
  22. var UserData = window.g_GlobalUserInfo.m_GlobalUserData
  23. if (UserData && UserData.cbGender != null) {
  24. // cbGender == 1 表示男性,cbGender == 0 表示女性
  25. this.m_genderIndex = UserData.cbGender
  26. // 同时保存到设置中,下次直接使用
  27. if (window.SaveSetting && window.SetKey_Gender) {
  28. window.SaveSetting(window.SetKey_Gender, this.m_genderIndex);
  29. // console.log("保存性别设置到本地:", this.m_genderIndex);
  30. }
  31. }
  32. }
  33. } catch (error) {
  34. console.error("获取用户性别信息失败:", error);
  35. this.m_genderIndex = 1; // 默认男性
  36. }
  37. //设置toggle状态
  38. var toggleComponent = this.m_toggleNodes[this.m_genderIndex].getComponent(cc.Toggle);
  39. toggleComponent.isChecked = true;
  40. // console.log("初始化时toggle选中状态:", (this.m_genderIndex == 1 ? "男" : "女"));
  41. },
  42. onTogClicked: function (tog) {
  43. // console.log("点击了性别切换按钮:", `将先的性别${this.m_genderIndex}切换为${tog.node.name}`);
  44. var newGenderIndex = parseInt(tog.node.name);
  45. //更新本地缓存
  46. this.m_genderIndex = newGenderIndex;
  47. // 同时保存到设置中,下次直接使用
  48. if (window.SaveSetting && window.SetKey_Gender) {
  49. window.SaveSetting(window.SetKey_Gender, this.m_genderIndex);
  50. // console.log("保存性别设置到本地:", this.m_genderIndex);
  51. }
  52. // 发送网络请求修改性别(真正同步到服务器)
  53. var pGlobalUserData = window.g_GlobalUserInfo.GetGlobalUserData();
  54. var webUrl = window.PHP_HOME + '/UserFunc.php?&GetMark=6&dwUserID=' + pGlobalUserData.dwUserID;
  55. webUrl += "&Sex=" + newGenderIndex;
  56. WebCenter.GetData(webUrl, null, function (data) {
  57. // 网络请求成功后更新本地数据
  58. pGlobalUserData.cbGender = newGenderIndex;
  59. //toggle状态确保UI同步
  60. this.UpdateToggleState(newGenderIndex);
  61. // console.log('性别修改成功并同步到服务器');
  62. // 可以在这里添加成功提示
  63. if (window.g_CurScene && window.g_CurScene.ShowTips) {
  64. window.g_CurScene.ShowTips('性别修改成功');
  65. }
  66. }.bind(this));
  67. },
  68. //更新toggle状态
  69. UpdateToggleState: function (newGenderIndex) {
  70. switch (newGenderIndex) {
  71. case 0:
  72. this.m_toggleNodes[0].getComponent(cc.Toggle).isChecked = true;
  73. // console.log("点击女时toggle选中状态:", (this.m_genderIndex == 1 ? "男" : "女"));
  74. break;
  75. case 1:
  76. this.m_toggleNodes[1].getComponent(cc.Toggle).isChecked = true;
  77. // console.log("点击男时toggle选中状态:", (this.m_genderIndex == 1 ? "男" : "女"));
  78. break;
  79. }
  80. }
  81. });