SystemModel.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { PlayerAddClientError, PlayerAddClientErrorPram } from "../../../common/Xyc";
  2. import Config from "../../../Config";
  3. import UIHelp from "../../../logic/ui/UIHelp";
  4. import { I18n } from "../../../utils/I18nUtil";
  5. import { PlatformType } from "../../const/TypeConst";
  6. import GameDataCenter from "../../GameDataCenter";
  7. import IDataModel from "../../../frameWork/model/IDataModel";
  8. export default class SystemModel extends IDataModel {
  9. is_open_music: boolean = false;
  10. is_open_sound: boolean = false;
  11. constructor() {
  12. super('system');
  13. window["sendClientErr"] = (strList: string[]) => {
  14. GameDataCenter.system.sendClientErrMsg(strList)
  15. }
  16. }
  17. copyStr(str: string) {
  18. if (typeof str != "string") {
  19. return false
  20. }
  21. if (cc.sys.isBrowser) {
  22. var input = str;
  23. const el = document.createElement('textarea');
  24. el.value = input;
  25. el.setAttribute('readonly', '');
  26. el.style.contain = 'strict';
  27. el.style.position = 'absolute';
  28. el.style.left = '-9999px';
  29. el.style.fontSize = '12pt'; // Prevent zooming on iOS
  30. const selection = getSelection();
  31. let originalRange: Range = null;
  32. if (selection.rangeCount > 0) {
  33. originalRange = selection.getRangeAt(0);
  34. }
  35. document.body.appendChild(el);
  36. el.select();
  37. el.selectionStart = 0;
  38. el.selectionEnd = input.length;
  39. var success = false;
  40. try {
  41. success = document.execCommand('copy');
  42. } catch (err) { }
  43. document.body.removeChild(el);
  44. if (originalRange) {
  45. selection.removeAllRanges();
  46. selection.addRange(originalRange);
  47. }
  48. UIHelp.ShowI18nTips("SystemModel_showtips")
  49. } else if (cc.sys.platform == cc.sys.WECHAT_GAME) {
  50. wx.setClipboardData({
  51. data: str,
  52. success(res) {
  53. wx.getClipboardData({
  54. success(res) {
  55. console.log(res.data)
  56. }
  57. })
  58. }
  59. })
  60. } else if (cc.sys.os == cc.sys.OS_ANDROID) {
  61. jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "copyStr", "(Ljava/lang/String;)V", str);
  62. UIHelp.ShowI18nTips("SystemModel_showtips")
  63. }
  64. }
  65. triggerGc() {
  66. if (cc.sys.platform == cc.sys.WECHAT_GAME) {
  67. wx.triggerGC()
  68. } else if (GameDataCenter.plat.type == PlatformType.ylTiktok) {
  69. // tt.triggerGC()
  70. }
  71. }
  72. // 清除应用缓存,谨用
  73. clearCache() {
  74. UIHelp.ShowDialog({
  75. content: I18n.getI18nText('SystemModel_dialog'),
  76. cbConfirm: () => {
  77. if (cc.sys.platform == cc.sys.WECHAT_GAME) {
  78. cc.assetManager.cacheManager.clearCache()
  79. GameDataCenter.plat.instance.restart(true)
  80. } else if (GameDataCenter.plat.type == PlatformType.ylTiktok) {
  81. GameDataCenter.plat.instance.restart(true)
  82. }
  83. }
  84. })
  85. }
  86. // 清除最近少用的缓存
  87. clearLRU() {
  88. cc.assetManager.cacheManager.clearLRU()
  89. }
  90. sendClientErrMsg(strList: string[]) {
  91. let param: PlayerAddClientErrorPram = {
  92. pid: Config.pid,
  93. uuid: GameDataCenter.user.uuid,
  94. error: strList
  95. }
  96. this.send(PlayerAddClientError.url, param)
  97. }
  98. }