_Define.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704
  1. window.LEN_NICKNAME //Define.js
  2. cc.VERSION_PLAZA = 0x6070001;
  3. LOGIN_SERVER_PORT = 8600;
  4. AndroidBUG = 'NoHttps';
  5. ShowLobbyClub = 0;
  6. g_ShowClubInfo = null;
  7. Alert_Yes = 1;
  8. Alert_YesNo = 3;
  9. Alert_All = 7;
  10. //动态滚动数量
  11. window.DYNAMIC_SCROLL_CNT = 20
  12. //场景资源预加载
  13. window.gGameBG=null;
  14. //重新登录
  15. gReLogin = false;
  16. g_Login = null;
  17. g_Launch = null;
  18. g_Lobby = null;
  19. g_Table = null;
  20. g_CurScene = null;
  21. g_UpdateManager = null;
  22. cc.game.on(cc.game.EVENT_HIDE, function(event){
  23. if(window.LOG_NET_DATA)console.log("切换后台");
  24. if(!cc.share.IsH5_WX()) {
  25. if (g_Table && g_Table.m_ServerItem && g_Table.m_ServerItem.mInterval == null) {
  26. g_Table.m_ServerItem.CloseSocket();
  27. }
  28. window.gClubClientKernel.shutdown();
  29. }
  30. });
  31. cc.game.on(cc.game.EVENT_SHOW, function(event){
  32. if(window.LOG_NET_DATA)console.log("切换前台");
  33. if(cc.sys.isBrowser)
  34. {
  35. console.log("登录回调search--",window.location.search)
  36. // g_Login.h5LoginCb(window.location.search)
  37. }
  38. if(!cc.share.IsH5_WX()) {
  39. try {
  40. //重连
  41. if (g_Table && g_Table.m_ServerItem && g_Table.m_ServerItem.mInterval == null){
  42. g_Table.OnGFServerReLink();
  43. }
  44. //刷新用户信息
  45. if(g_Lobby && g_Lobby.OnBtRefeshRoomCard) {
  46. g_Lobby.OnBtRefeshRoomCard();
  47. }
  48. // setTimeout(()=>{
  49. if(window.gClubClientKernel._InitiateClose) window.gClubClientKernel.connect();
  50. // },1.0);
  51. } catch (error) {
  52. if(window.LOG_DEBUG) console.log(error)
  53. }
  54. }
  55. });
  56. //////////////////////////////////////////////////////////////////////////////////
  57. enXLeft = 1; //左对齐
  58. enXCenter = 2; //中对齐
  59. enXRight = 3; //右对齐
  60. //////////////////////////////////////////////////////////////////////////////////
  61. FILTER_MENU_PAGE = 0x01
  62. FILTER_MENU_DAY = 0x02
  63. FILTER_MENU_TYPE = 0x04
  64. FILTER_MENU_KIND = 0x08
  65. FILTER_MENU_LEVEL = 0x10
  66. //数值定义
  67. MAX_PATH = 260; //最大路径
  68. MAX_CLUB_ROOM = 50;//俱乐部最大房间
  69. MAX_DK_ROOM = 20;
  70. INVALD_CHAIR = 0xFFFF;
  71. CARD_WIGTH = 177;
  72. CARD_HEIGHT = 241;
  73. //头像大小
  74. FACE_CX = 48; //头像宽度
  75. FACE_CY = 48; //头像高度
  76. //长度定义
  77. LEN_LESS_ACCOUNTS= 6; //最短帐号
  78. LEN_LESS_NICKNAME= 6; //最短昵称
  79. LEN_LESS_PASSWORD= 6; //最短密码
  80. //人数定义
  81. MAX_CHAIR = 4; //100 //最大椅子
  82. MAX_TABLE = 512; //最大桌子
  83. MAX_COLUMN = 32; //最大列表
  84. MAX_ANDROID = 256; //最大机器
  85. MAX_PROPERTY = 128; //最大道具
  86. MAX_WHISPER_USER = 16; //最大私聊
  87. //列表定义
  88. MAX_KIND = 128; //最大类型
  89. MAX_SERVER = 1024; //最大房间
  90. //参数定义
  91. INVALID_CHAIR = 0xFFFF; //无效椅子
  92. INVALID_TABLE = 0xFFFF; //无效桌子
  93. //税收定义
  94. REVENUE_BENCHMARK = 0; //税收起点
  95. REVENUE_DENOMINATOR = 1000; //税收分母
  96. LinkInfo = null;
  97. function getLinkInfo() { //输入参数名称
  98. if(LinkInfo == null){
  99. LinkInfo = new Object();
  100. var state = getQueryString("state");//
  101. if(state && state != ''){
  102. var obj = JSON.parse(state);
  103. if(obj.LinkRoom) LinkInfo.LinkRoom = obj.LinkRoom.split(',');
  104. }
  105. if(LinkInfo.LinkRoom == null) LinkInfo.LinkRoom = [0,0,0];
  106. }
  107. }
  108. SERVER_RULES_AA =0X00000001 ; //AA支付
  109. SERVER_RULES_DK =0X00000002 ; //代开房间
  110. SERVER_RULES_SCORE =0X00000004 ; //积分房间
  111. SERVER_RULES_GOLD =0X00000008 ; //金币房间
  112. //////////////////////////////////////////////////////////////////////////////////
  113. //系统参数
  114. //游戏状态
  115. GAME_STATUS_FREE = 0; //空闲状态
  116. GAME_STATUS_PLAY = 100; //游戏状态
  117. GAME_STATUS_WAIT = 200; //等待状态
  118. //系统参数
  119. LEN_USER_CHAT = 128; //聊天长度
  120. TIME_USER_CHAT = 1; //聊天间隔
  121. TRUMPET_MAX_CHAR = 128; //喇叭长度
  122. //////////////////////////////////////////////////////////////////////////////////
  123. //索引质数
  124. //列表质数
  125. PRIME_TYPE = 11; //种类数目
  126. PRIME_KIND = 53; //类型数目
  127. PRIME_NODE = 101; //节点数目
  128. PRIME_PAGE = 53; //自定数目
  129. PRIME_SERVER = 1009; //房间数目
  130. //人数质数
  131. PRIME_SERVER_USER = 503; //房间人数
  132. PRIME_ANDROID_USER = 503; //机器人数
  133. PRIME_PLATFORM_USER = 100003; //平台人数
  134. //////////////////////////////////////////////////////////////////////////////////
  135. //数据长度
  136. //资料数据
  137. window.LEN_MD5 = 33; //加密密码
  138. LEN_USERNOTE = 32; //备注长度
  139. window.LEN_ACCOUNTS = 32; //帐号长度
  140. window.LEN_NICKNAME = 32; //昵称长度
  141. window.LEN_PASSWORD = 33; //密码长度
  142. window.LEN_GROUP_NAME = 32; //社团名字
  143. window.LEN_UNDER_WRITE = 32; //个性签名
  144. window.LEN_IP = 16;
  145. //数据长度
  146. LEN_QQ = 16; //Q Q 号码
  147. LEN_EMAIL = 33; //电子邮件
  148. LEN_USER_NOTE = 256; //用户备注
  149. LEN_SEAT_PHONE = 33; //固定电话
  150. LEN_MOBILE_PHONE = 12; //移动电话
  151. LEN_PASS_PORT_ID = 19; //证件号码
  152. LEN_COMPELLATION = 16; //真实名字
  153. LEN_DWELLING_PLACE = 128; //联系地址
  154. LEN_WEEK = 7 //星期长度
  155. //机器标识
  156. LEN_NETWORK_ID = 13; //网卡长度
  157. LEN_MACHINE_ID = 33; //序列长度
  158. //列表数据
  159. LEN_TYPE = 32; //种类长度
  160. LEN_KIND = 32; //类型长度
  161. LEN_NODE = 32; //节点长度
  162. LEN_PAGE = 32; //定制长度
  163. LEN_SERVERADDR = 32; //房间地址场地
  164. LEN_SERVER = 32; //房间长度
  165. LEN_PROCESS = 32; //进程长度
  166. LEN_NAME = 32;
  167. //////////////////////////////////////////////////////////////////////////////////
  168. //用户关系
  169. CP_NORMAL = 0; //未知关系
  170. CP_FRIEND = 1; //好友关系
  171. CP_DETEST = 2; //厌恶关系
  172. CP_SHIELD = 3; //屏蔽聊天
  173. //////////////////////////////////////////////////////////////////////////////////
  174. //性別定义
  175. GENDER_FEMALE = 0; //女性性別
  176. GENDER_MANKIND = 1; //男性性別
  177. //////////////////////////////////////////////////////////////////////////////////
  178. //游戏模式
  179. GAME_GENRE_GOLD = 0x0001; //金币类型
  180. GAME_GENRE_SCORE = 0x0002; //点值类型
  181. GAME_GENRE_MATCH = 0x0004; //比赛类型
  182. GAME_GENRE_EDUCATE = 0x0008; //训练类型
  183. GAME_GENRE_PERSONAL = 0x0010;
  184. GAME_GENRE_PERSONAL_S = 0x0020;
  185. GAME_GENRE_PERSONAL_G = 0x0040;
  186. //////////////////////////////////////////////////////////////////////////////////
  187. //用户状态
  188. US_NULL = 0x00; //没有状态
  189. US_FREE = 0x01; //站立状态
  190. US_SIT = 0x02; //坐下状态
  191. US_READY = 0x03; //同意状态
  192. US_LOOKON = 0x04; //旁观状态
  193. US_PLAYING = 0x05; //游戏状态
  194. US_OFFLINE = 0x06; //断线状态
  195. //////////////////////////////////////////////////////////////////////////////////
  196. //用户测试
  197. UR_GAME_TEST_USER = 0x20000000;
  198. USER_CARD_TEST = true;
  199. //////////////////////////////////////////////////////////////////////////////////
  200. //比赛状态
  201. MS_NULL = 0x00; //没有状态
  202. MS_SIGNUP = 0x01; //报名状态
  203. MS_MATCHING = 0x02; //比赛状态
  204. MS_OUT = 0x03; //淘汰状态
  205. //////////////////////////////////////////////////////////////////////////////////
  206. //房间规则
  207. SRL_LOOKON = 0x00000001; //旁观标志
  208. SRL_OFFLINE = 0x00000002; //断线标志
  209. SRL_SAME_IP = 0x00000004; //同网标志
  210. //房间规则
  211. SRL_ROOM_CHAT = 0x00000100; //聊天标志
  212. SRL_GAME_CHAT = 0x00000200; //聊天标志
  213. SRL_WISPER_CHAT = 0x00000400; //私聊标志
  214. SRL_HIDE_USER_INFO = 0x00000800; //隐藏标志
  215. //////////////////////////////////////////////////////////////////////////////////
  216. //数据库定义
  217. DB_ERROR = -1; //处理失败
  218. DB_SUCCESS = 0; //处理成功
  219. DB_NEEDMB = 18; //处理失败
  220. //////////////////////////////////////////////////////////////////////////////////
  221. //设备类型
  222. DEVICE_TYPE_PC = 0x00; //PC
  223. DEVICE_TYPE_ANDROID = 0x10; //Android
  224. DEVICE_TYPE_ITOUCH = 0x20; //iTouch
  225. DEVICE_TYPE_IPHONE = 0x40; //iPhone
  226. DEVICE_TYPE_IPAD = 0x80; //iPad
  227. /////////////////////////////////////////////////////////////////////////////////
  228. //手机定义
  229. //视图模式
  230. VIEW_MODE_ALL = 0x0001; //全部可视
  231. VIEW_MODE_PART = 0x0002; //部分可视
  232. //信息模式
  233. VIEW_INFO_LEVEL_1 = 0x0010; //部分信息
  234. VIEW_INFO_LEVEL_2 = 0x0020; //部分信息
  235. VIEW_INFO_LEVEL_3 = 0x0040; //部分信息
  236. VIEW_INFO_LEVEL_4 = 0x0080; //部分信息
  237. //其他配置
  238. RECVICE_GAME_CHAT = 0x0100; //接收聊天
  239. RECVICE_ROOM_CHAT = 0x0200; //接收聊天
  240. RECVICE_ROOM_WHISPER = 0x0400; //接收私聊
  241. //行为标识
  242. BEHAVIOR_LOGON_NORMAL = 0x0000; //普通登录
  243. BEHAVIOR_LOGON_IMMEDIATELY= 0x1000; //立即登录
  244. /////////////////////////////////////////////////////////////////////////////////
  245. //处理结果
  246. RESULT_ERROR = -1; //处理错误
  247. RESULT_SUCCESS = 0; //处理成功
  248. RESULT_FAIL = 1; //处理失败
  249. /////////////////////////////////////////////////////////////////////////////////
  250. ServiceStatus_Unknow = 0; //未知状态
  251. ServiceStatus_Entering = 1; //进入状态
  252. ServiceStatus_Validate = 2; //验证状态
  253. ServiceStatus_RecvInfo = 3; //读取状态
  254. ServiceStatus_ServiceIng = 4; //服务状态
  255. ServiceStatus_NetworkDown = 5; //中断状态
  256. /////////////////////////////////////////////////////////////////////////////////
  257. //无效数值
  258. INVALID_BYTE = 0xFF; //无效数值
  259. INVALID_WORD = 0xFFFF; //无效数值
  260. INVALID_DWORD = 0xFFFFFFFF; //无效数值
  261. //扣费类型
  262. MATCH_FEE_TYPE_GOLD = 0x00; //扣费类型
  263. MATCH_FEE_TYPE_MEDAL = 0x01; //扣费类型
  264. //比赛类型
  265. MATCH_TYPE_LOCKTIME = 0x00; //定时类型
  266. MATCH_TYPE_IMMEDIATE = 0x01; //即时类型
  267. window.g_NetResponseTime = 0; //服务器心跳时间
  268. //用户属性
  269. tagUserAttribute = cc.Class({
  270. ctor :function() {
  271. //用户属性
  272. this.dwUserID = 0; //用户标识
  273. this.wTableID = 0; //桌子号码
  274. this.wChairID = 0; //椅子号码
  275. //权限属性
  276. this.dwUserRight = 0; //用户权限
  277. this.dwMasterRight = 0; //管理权限
  278. },
  279. });
  280. //游戏属性
  281. tagGameAttribute = cc.Class({
  282. ctor :function () {
  283. this.wKindID = 0; //类型标识
  284. this.wChairCount = 0; //椅子数目
  285. this.dwClientVersion = 0; //游戏版本
  286. this.szGameName = ""; //游戏名字
  287. this.len_szGameName = LEN_KIND*cc.TCHAR_SIZE; //游戏名字
  288. },
  289. });
  290. //用户属性
  291. tagUserAttrib = cc.Class({
  292. ctor :function () {
  293. this.cbCompanion = 0; //用户关系
  294. },
  295. });
  296. $_GET = (function(){
  297. if(cc.sys.isBrowser){
  298. var url = document.location.href.toString();
  299. var u = url.split("?");
  300. if(typeof(u[1]) == "string"){
  301. u = u[1].split("&");
  302. var get = {};
  303. for(var i in u){
  304. var j = u[i].split("=");
  305. get[j[0]] = j[1];
  306. }
  307. return get;
  308. } else {
  309. return {};
  310. }
  311. }
  312. })();
  313. function getQueryString(name) { //输入参数名称
  314. if(cc.sys.isBrowser){//
  315. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); //根据参数格式,正则表达式解析参数
  316. var r = window.location.search.substr(1).match(reg);
  317. if (r != null) return unescape(r[2]); return null; //返回参数值
  318. }
  319. }
  320. function pad(num, n, s) {
  321. var str = '' + num;
  322. while (str.length < n) {
  323. str = s ? '' + s + str : '0' + str;
  324. }
  325. return str;
  326. }
  327. function insertStr(soure, p, s) {
  328. return `${soure.slice(0, p)}${s}${soure.slice(p)}`;
  329. }
  330. function TransitionScore(lScore) {
  331. return Number(Number(lScore) / window.PLATFORM_RATIO)
  332. }
  333. function Score2Str(lScore){
  334. if(lScore === '') return lScore;
  335. lScore = Number(lScore)/window.PLATFORM_RATIO;
  336. return lScore>=0? `${cutscore(lScore)}`:`-${cutscore(-lScore)}`;
  337. }
  338. // function Score2Str(lScore, bShowFull) {
  339. // if(lScore === '') return lScore;
  340. // if (!window.PLATFORM_RATIO || window.PLATFORM_RATIO < 10 || typeof (lScore) != 'number') return `${cutscore(Number(lScore))}`;
  341. // var num = Math.abs(Number(lScore));
  342. // if (num == 0) return `${num}`;
  343. // var len = `${window.PLATFORM_RATIO}`.length - 1;
  344. // var str = `${pad(num, len, '0')}`;
  345. // str = insertStr(str, str.length - len, '.');
  346. // if(num < window.PLATFORM_RATIO) str = `0${str}`;
  347. // if(!bShowFull) {
  348. // for(var i = str.length - 1; i >= 0; --i) {
  349. // var s = str[i];
  350. // if(s != '0' && s != '.') break;
  351. // str = str.slice(0, i);
  352. // if(s == '.') break;
  353. // }
  354. // }
  355. // if(Number(lScore) < 0) return `-${cutscore(Number(str))}`;
  356. // return cutscore(Number(str));
  357. // }
  358. function Time2Str(dwTime) {
  359. var rDate = new Date();
  360. rDate.setTime(dwTime * 1000);
  361. var str = rDate.getFullYear()+'-'+pad(rDate.getMonth()+1,2)+'-'+pad(rDate.getDate(),2);
  362. str += ' '+pad(rDate.getHours(), 2)+':'+pad(rDate.getMinutes(), 2)+':'+pad(rDate.getSeconds(), 2);
  363. return str;
  364. }
  365. function DifDay(time1, time2) {
  366. var rDate1 = new Date();
  367. rDate1.setTime(time1);
  368. var rDate2 = new Date();
  369. rDate2.setTime(time2);
  370. if(rDate1.getFullYear() != rDate2.getFullYear()) return true;
  371. if(rDate1.getMonth() != rDate2.getMonth()) return true;
  372. if(rDate1.getDate() != rDate2.getDate()) return true;
  373. return false;
  374. }
  375. function cutscore(Num) {
  376. var str_cut = "";
  377. if(Num < 10000){//不到10W直接显示
  378. str_cut = Num;
  379. }else if(Num < 100000000){//10W ~ 1亿
  380. str_cut = Math.floor(Num/10000*100)/100 +'萬'
  381. str_cut = str_cut.replace('.00','');
  382. }else{
  383. str_cut = Math.floor(Num/100000000*100)/100 + '億'
  384. str_cut = str_cut.replace('.00','');
  385. }
  386. return str_cut;
  387. }
  388. function cutstr(str, len) {
  389. var str_length = 0;
  390. var str_cut = "";
  391. for (var i = 0; i < str.length; i++) {
  392. var a = str.charAt(i);
  393. str_cut += a;
  394. if (escape(a).length > 4) str_length+=2;//中文
  395. else str_length++;
  396. if (str_length + 1>= len*2 && str.length - i > 1) {
  397. str_cut = str_cut + "...";
  398. return str_cut;
  399. }
  400. }
  401. return str_cut;
  402. }
  403. function deepClone(obj){
  404. if (obj == null) return null;
  405. var objClone = JSON.parse(JSON.stringify(obj));
  406. return objClone;
  407. }
  408. function FormatNember(Num){
  409. return Math.floor(parseInt(Num)/10);
  410. }
  411. function clone(obj) {
  412. // Handle the 3 simple types, and null or undefined
  413. if (null == obj || "object" != typeof obj) return obj;
  414. // Handle Date
  415. if (obj instanceof Date) {
  416. var copy = new Date();
  417. copy.setTime(obj.getTime());
  418. return copy;
  419. }
  420. // Handle Array
  421. if (obj instanceof Array) {
  422. var copy = [];
  423. var len = obj.length;
  424. for (var i = 0; i < len; ++i) {
  425. copy[i] = clone(obj[i]);
  426. }
  427. return copy;
  428. }
  429. // Handle Object
  430. if (obj instanceof Object) {
  431. var copy = {};
  432. for (var attr in obj) {
  433. if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
  434. }
  435. return copy;
  436. }
  437. throw new Error("Unable to copy obj! Its type isn't supported." + typeof(obj));
  438. }
  439. function ASSERT(bCondition, sErrorMsg) {
  440. if (!bCondition) {
  441. // alert(sErrorMsg);
  442. console.log(sErrorMsg);
  443. /* throw */ new Error(sErrorMsg);
  444. }
  445. }
  446. function cutPhone(strPhone) {
  447. if (strPhone.length < 11) return strPhone;
  448. return strPhone.substring(0, 3) + '****' + strPhone.substring(7, strPhone.length);
  449. }
  450. function cutGameID(GameID) {
  451. GameID = GameID.toString();
  452. if(GameID == '') return GameID;
  453. return GameID.substring(0, 2) + '**' + GameID.substring(4, GameID.length);
  454. }
  455. function cutNickName(nickName) {
  456. if (nickName.length < 2) return nickName;
  457. var tmpNick = '';
  458. for(var i =2;i<nickName.length;i++){
  459. tmpNick += '*';
  460. }
  461. return nickName.substring(0, 2) +tmpNick;
  462. }
  463. function saveImage() {
  464. if(!jsb) return;
  465. let node = new cc.Node();
  466. node.parent = cc.director.getScene();
  467. node.width = cc.view.getVisibleSize().width;
  468. node.height = cc.view.getVisibleSize().height;
  469. node.x = node.width/2;
  470. node.y = node.height/2;
  471. let camera = node.addComponent(cc.Camera);
  472. camera.cullingMask = 0xffffffff;
  473. let texture = new cc.RenderTexture();
  474. texture.initWithSize(node.width, node.height);
  475. camera.targetTexture = texture;
  476. node.parent.scaleY = -1;
  477. camera.render();
  478. node.parent.scaleY = 1
  479. let data = texture.readPixels();
  480. let width = texture.width;
  481. let height = texture.height;
  482. let fileName = "result_share.jpg";
  483. let fullPath = jsb.fileUtils.getWritablePath() + fileName;
  484. if (jsb.fileUtils.isFileExist(fullPath)) {
  485. jsb.fileUtils.removeFile(fullPath);
  486. }
  487. let success = jsb.saveImageData(data, width, height, fullPath);
  488. return success ? fullPath : '';
  489. }
  490. function CompareVersion(versionA, versionB) {
  491. if(window.LOG_NET_DATA)console.log(`JS Custom Version Compare: version A is ${versionA}, version B is ${versionB}`);
  492. var vA = versionA.split('.');
  493. var vB = versionB.split('.');
  494. for(var i in vA) { vA[i] = parseInt(vA[i]) }
  495. for(var i in vB) { vB[i] = parseInt(vB[i]) }
  496. if(vA[0] < vB[0]) return true;
  497. else if(vA[1] < vB[1]) return true;
  498. return false;
  499. };
  500. window.Vertical = 0;
  501. window.Horizontal = 1;
  502. window.changeOrientationH = function (horizontal, callFunc) {
  503. let bChanged = false;
  504. let w = cc.view.getFrameSize().width;
  505. let h = cc.view.getFrameSize().height;
  506. if (horizontal && w > h) {
  507. // console.log("已经是横屏,无需修改!",w ,h);
  508. return callFunc && callFunc(bChanged);
  509. } else if (!horizontal && w < h) {
  510. // console.log("已经是竖屏,无需修改!",w ,h);
  511. return callFunc && callFunc(bChanged);
  512. }
  513. if(horizontal) {
  514. SCENE_WIGHT = SCENE_WIGHT_BASE;
  515. SCENE_HEIGHT = SCENE_HEIGHT_BASE;
  516. } else {
  517. SCENE_WIGHT = SCENE_HEIGHT_BASE;
  518. SCENE_HEIGHT = SCENE_WIGHT_BASE;
  519. }
  520. bChanged = true;
  521. cc.view.setFrameSize(SCENE_WIGHT, SCENE_HEIGHT);
  522. if (cc.sys.os == cc.sys.OS_IOS) {
  523. jsb.reflection.callStaticMethod('AppController', "changeOrientation:", horizontal);
  524. } else if (cc.sys.os == cc.sys.OS_ANDROID) {
  525. jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "changeOrientation", "(I)V", horizontal);
  526. }
  527. if (horizontal) cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
  528. else cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
  529. cc.view.setDesignResolutionSize(SCENE_WIGHT, SCENE_HEIGHT, cc.ResolutionPolicy.FIXED_HEIGHT);
  530. callFunc && setTimeout(function () {
  531. callFunc(bChanged);
  532. }, 500);
  533. }
  534. window.HorV = function(Name) {
  535. return window.Horizontal;
  536. // 添加游戏ID 切换竖屏
  537. // if(Name == 'Table' && g_ServerListDataLast && g_ServerListDataLast.wKindID == 99999) {
  538. // return window.Vertical;
  539. // } else {
  540. // return window.Horizontal;
  541. // }
  542. }
  543. function ChangeScene(Name) {
  544. if(window.gClubClientKernel && window.gClubClientKernel.onSetClubSink) window.gClubClientKernel.onSetClubSink(null,null);
  545. let bAct = false;
  546. let cbHV = window.HorV(Name);
  547. // 根据当前场景g_CurScene的值来决定bAct的值
  548. if(g_CurScene == g_Table) bAct = false; // 如果当前场景是g_Table,则bAct设为false
  549. else if(g_CurScene == g_Launch) bAct = false; // 如果当前场景是g_Launch,则bAct设为false
  550. else bAct = true; // 其他场景则将bAct设为true
  551. // 预加载指定名称的场景Name,加载完成后执行回调函数
  552. cc.director.preloadScene(Name, null, function() {
  553. // 如果bAct为true,则先执行隐藏当前场景的操作,再改变屏幕方向,最后加载新场景
  554. const screenRatio = cc.view.getFrameSize().width / cc.view.getFrameSize().height;
  555. if(screenRatio > 1.65) {
  556. if(bAct) {
  557. HideI2O(g_CurScene.node, function () { // 隐藏当前场景的节点
  558. changeOrientationH(cbHV, function() { // 改变屏幕方向
  559. cc.director.loadScene(Name, function(){ // 加载新场景Name
  560. //cc.view.setDesignResolutionSize(SCENE_WIGHT, SCENE_HEIGHT, cc.ResolutionPolicy.FIXED_HEIGHT); // 设置设计分辨率大小
  561. const screenRatio = cc.view.getFrameSize().width / cc.view.getFrameSize().height;
  562. if(screenRatio > 1.5) {
  563. cc.view.setDesignResolutionSize(SCENE_WIGHT, SCENE_HEIGHT, cc.ResolutionPolicy.FIXED_HEIGHT); // 设置设计分辨率大小
  564. console.log("1屏",screenRatio);
  565. }
  566. });
  567. });
  568. }, 0.1, true); // 延迟0.1秒执行隐藏操作,true表示使用缓动效果
  569. } else {
  570. // 如果bAct为false,则直接改变屏幕方向,然后加载新场景
  571. changeOrientationH(cbHV, function() { // 改变屏幕方向
  572. cc.director.loadScene(Name, function(){ // 加载新场景Name
  573. //cc.view.setDesignResolutionSize(SCENE_WIGHT, SCENE_HEIGHT, cc.ResolutionPolicy.FIXED_HEIGHT); // 设置设计分辨率大小
  574. const screenRatio = cc.view.getFrameSize().width / cc.view.getFrameSize().height;
  575. if(screenRatio > 1.5) {
  576. cc.view.setDesignResolutionSize(SCENE_WIGHT, SCENE_HEIGHT, cc.ResolutionPolicy.FIXED_HEIGHT); // 设置设计分辨率大小
  577. console.log("2屏",screenRatio);
  578. }
  579. });
  580. });
  581. }
  582. }else{
  583. if(bAct) {
  584. HideI2O(g_CurScene.node, function () { // 隐藏当前场景的节点
  585. cc.director.loadScene(Name, function(){ // 加载新场景Name
  586. //cc.view.setDesignResolutionSize(SCENE_WIGHT, SCENE_HEIGHT, cc.ResolutionPolicy.FIXED_HEIGHT); // 设置设计分辨率大小
  587. });
  588. }, 0.1, true); // 延迟0.1秒执行隐藏操作,true表示使用缓动效果
  589. } else {
  590. cc.director.loadScene(Name, function(){ // 加载新场景Name
  591. //cc.view.setDesignResolutionSize(SCENE_WIGHT, SCENE_HEIGHT, cc.ResolutionPolicy.FIXED_HEIGHT); // 设置设计分辨率大小
  592. });
  593. }
  594. }
  595. }.bind(g_CurScene)); // 使用g_CurScene作为回调函数的上下文
  596. }