var onfire = require('./utils/onfire'); let webapi = require('./utils/webapi'); let stringUtil = require('./utils/string.util'); cc.Class({ extends: cc.Component, properties: { scrollContent: { default: null, type: cc.Node }, scrollView: { default: null, type: cc.ScrollView }, mainScrollPrefab: { default: null, type: cc.Prefab }, topMenuBtn: { default: null, type: cc.Button }, mainScrollContent: { default: null, type: cc.Node }, topMenuPrefab: { default: null, type: cc.Prefab }, infoMenuPrefab: { default: null, type: cc.Prefab }, inviteMenuPrefab: { default: null, type: cc.Prefab }, infoMenuPrefab2: { default: null, type: cc.Prefab }, rulePrefab: { default: null, type: cc.Prefab }, resultPrefab: { default: null, type: cc.Prefab }, menuContentPrefab: { default: null, type: cc.Prefab }, topMenu: { default: null, type: cc.Node }, infoView: { default: null, type: cc.Node }, partsY: [], needCode: true, logined: false, mobile: '', images: [] }, // LIFE-CYCLE CALLBACKS: onLoad () { let self = this; webapi.preLogin({}) .then(rep => { if (rep.errcode === 0) { self.needCode = rep.smsCheck; self.logined = rep.isLogin; cc.sys.localStorage.setItem('activity_token', rep.token); if (self.logined) { return webapi.userInfo() } } return null; }) .then(userRep => { if (userRep) { console.log(userRep); if (userRep.errcode === 0) { self.mobile = userRep.user.username; self.images = userRep.user.images; self.mainScrollContent.getComponent('scrollContent').updateUserName(stringUtil.parseMobile(self.mobile)); self.mainScrollContent.getComponent('scrollContent').updatePuzzle(self.images); self.mainScrollContent.getComponent('scrollContent').toggleLoginStatus(true); } } }) .catch (err => { console.log(err); }); this.partsY = [0, 1560, 2920, 3666, 4686]; this.mainScrollContent = cc.instantiate(this.mainScrollPrefab); this.scrollContent.addChild(this.mainScrollContent); this.mainScrollContent.getComponent('scrollContent').top = this; this.mainScrollContent.getComponent('scrollContent').joinBtn.on('click', function () { self.showInfoMenu(); }); this.mainScrollContent.getComponent('scrollContent').inviteBtn.on('click', function () { self.showInviteMenu(); }); this.mainScrollContent.getComponent('scrollContent').ruleBtn.on('click', function () { self.showRuleMenu(); }); let topHeader = cc.instantiate(this.topMenuPrefab); this.node.addChild(topHeader, 10); topHeader.getComponent('topMenu').menuBtn.on('click', function () { self.showTopMenu(); }); this.scrollView.node.on('scroll-ended', function (e) { // let offsetY = self.scrollView.getScrollOffset().y; // console.log('getScrollOffset: ' + offsetY); }); this.longPressListener = onfire.on('longPressed', this.longPressed.bind(this)); }, start () { }, onDestroy: function () { onfire.un(this.topMenuListener); onfire.un(this.longPressListener); }, // update (dt) {}, showTopMenu() { let offsetY = this.scrollView.getScrollOffset().y; let menuNo = 0; for(let i = 0; i < this.partsY.length; i++) { if (offsetY >= this.partsY[i]) { menuNo= i; } } if (!this.topMenu) { this.topMenu = cc.instantiate(this.menuContentPrefab); this.node.addChild(this.topMenu, 9); this.topMenuListener = onfire.on("topMenuClick", this.onTopMenuClick.bind(this)); } else { this.topMenu.active = !this.topMenu.active ; } this.topMenu.getComponent('topMenuContent').updateMenuShow(menuNo); }, onTopMenuClick: function (idx) { console.log(idx); let y = this.partsY[idx]; this.topMenu.getComponent('topMenuContent').updateMenuShow(idx); this.scrollView.scrollToOffset(cc.v2(0, y), 0.1); this.topMenu.active = false; }, showInfoMenu() { if (this.needCode) { this.infoView = cc.instantiate(this.infoMenuPrefab2); } else { this.infoView = cc.instantiate(this.infoMenuPrefab); } this.infoView.getComponent('infoMenu').top = this; this.node.addChild(this.infoView, 11); }, showResultView() { this.infoView.getComponent('infoMenu').hide(); let resultView = cc.instantiate(this.resultPrefab); this.node.addChild(resultView, 11); }, showInviteMenu() { let inviteMenu = cc.instantiate(this.inviteMenuPrefab); this.node.addChild(inviteMenu, 11); }, showRuleMenu() { let ruleMenu = cc.instantiate(this.rulePrefab); this.node.addChild(ruleMenu, 11); }, longPressed(data) { console.log(data); switch (data.target) { case 'qr_wechat': window.location.href = 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU0MTk4MzkyNQ==&scene=124#wechat_redirect'; break; case 'qr_qq': window.location.href = 'http://qm.qq.com/cgi-bin/qm/qr?k=9OEVDuOyP1BZ_cXOApidE9P2ea8daCVF'; break; } }, userLogin(mobile, code) { let self = this; webapi.login(mobile, code) .then(rep => { if (rep.errcode === 0 || rep.errcode === 102 || rep.errcode === 103) { self.logined = true; self.mobile = rep.user.username; self.images = rep.user.images; self.mainScrollContent.getComponent('scrollContent').updateUserName(stringUtil.parseMobile(self.mobile)); self.mainScrollContent.getComponent('scrollContent').updatePuzzle(self.images); self.mainScrollContent.getComponent('scrollContent').toggleLoginStatus(true); self.infoView.getComponent('infoMenu').hide(); if (rep.errcode === 103 || rep.errcode === 102) { alert('您已预约'); } if (rep.errcode === 0) { self.showResultView(); } } }) .catch (err => { console.log(err); }); }, userLogout() { let self = this; if (confirm('确定退出?')) { webapi.logout() .then(rep => { if (rep.errcode === 0) { self.mainScrollContent.getComponent('scrollContent').toggleLoginStatus(false); self.mainScrollContent.getComponent('scrollContent').updatePuzzle([0,0,0,0,0,0,0,0,0]); } }) .catch(err => { console.log(err); }) } } });