From 7fd5a44452da03a432c2fbc88a82db2159ad09a1 Mon Sep 17 00:00:00 2001 From: zhl Date: Mon, 25 Feb 2019 19:22:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B6=E9=83=A8=E5=BC=B9=E5=87=BA=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=A0=B9=E6=8D=AEscrollview=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E8=AE=BE=E7=BD=AE=E9=80=89=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/scripts/main.js | 35 +++++++++++++++----------------- assets/scripts/topMenuBtn.js | 13 ++++++++++++ assets/scripts/topMenuContent.js | 9 ++++++++ 3 files changed, 38 insertions(+), 19 deletions(-) diff --git a/assets/scripts/main.js b/assets/scripts/main.js index 3713057..24f1fa5 100644 --- a/assets/scripts/main.js +++ b/assets/scripts/main.js @@ -49,13 +49,15 @@ cc.Class({ topMenu: { default: null, type: cc.Node - } + }, + partsY: [] }, // LIFE-CYCLE CALLBACKS: onLoad () { let self = this; + this.partsY = [0, 1560, 2920, 3666, 4686]; this.mainScrollContent = cc.instantiate(this.mainScrollPrefab); this.scrollContent.addChild(this.mainScrollContent); this.mainScrollContent.getComponent('scrollContent').joinBtn.on('click', function () { @@ -73,6 +75,8 @@ cc.Class({ self.showTopMenu(); }); this.scrollView.node.on('scroll-ended', function (e) { + // let offsetY = self.scrollView.getScrollOffset().y; + // console.log('getScrollOffset: ' + offsetY); }); }, @@ -83,6 +87,14 @@ cc.Class({ }, // 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); @@ -90,28 +102,13 @@ cc.Class({ } else { this.topMenu.active = !this.topMenu.active ; } + this.topMenu.getComponent('topMenuContent').updateMenuShow(menuNo); }, onTopMenuClick: function (idx) { console.log(idx); - let y = 0; - switch (idx) { - case 1: - y = 1560; - break; - case 2: - y = 2920; - break; - case 3: - y = 3666; - break; - case 4: - y = 4686; - break; - default: - y = 0; - break; - } + let y = this.partsY[idx]; + this.topMenu.getComponent('topMenuContent').updateMenuShow(idx); this.scrollView.scrollToOffset(cc.v2(0, y), 0.1); this.topMenu.active = false; }, diff --git a/assets/scripts/topMenuBtn.js b/assets/scripts/topMenuBtn.js index 4ffb84c..a6924c2 100644 --- a/assets/scripts/topMenuBtn.js +++ b/assets/scripts/topMenuBtn.js @@ -37,4 +37,17 @@ cc.Class({ }, // update (dt) {}, + updateStatus() { + let self = this; + let titleUrl = `textures/top_menu/menu_${this.btn_idx}`; + if (self.selected) { + titleUrl = `textures/top_menu/menu_${this.btn_idx}_s`; + this.bgSprite.node.active = true; + } else { + this.bgSprite.node.active = false; + } + cc.loader.loadRes(titleUrl, cc.SpriteFrame, function (err, spriteFrame) { + self.titleSprite.spriteFrame = spriteFrame; + }); + } }); diff --git a/assets/scripts/topMenuContent.js b/assets/scripts/topMenuContent.js index abcb9a5..4b72223 100644 --- a/assets/scripts/topMenuContent.js +++ b/assets/scripts/topMenuContent.js @@ -6,6 +6,7 @@ cc.Class({ default: null, type: cc.Prefab }, + btns: [] }, // LIFE-CYCLE CALLBACKS: @@ -16,6 +17,7 @@ cc.Class({ var btn = cc.instantiate(this.btnPrefab); btn.getComponent('topMenuBtn').btn_idx = i; btn.getComponent('topMenuBtn').selected = i === 0; + this.btns.push(btn); this.node.addChild(btn); let y = 400 - 120 * i; btn.setPosition(cc.v2(0, y)); @@ -26,4 +28,11 @@ cc.Class({ }, // update (dt) {}, + updateMenuShow(index) { + for(let btn of this.btns) { + let comp = btn.getComponent('topMenuBtn'); + comp.selected = comp.btn_idx === index; + comp.updateStatus(); + } + } });