| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- /**
- * @description 互推界面banner item类
- * @author kaka
- */
- import MoreGamePicItem from "./MoreGamePicItem";
- import PointItem from "./PointItem";
- const { ccclass, property } = cc._decorator;
- @ccclass
- export default class MoreGameBanner extends cc.Component {
- @property(cc.Node)
- dragArea: cc.Node = null
- @property(cc.Node)
- item1: cc.Node = null
- @property(cc.Node)
- item2: cc.Node = null
- @property(cc.Prefab)
- pointPrefab: cc.Prefab = null
- @property(cc.Node)
- pointLy: cc.Node = null
- @property(cc.Node)
- btnLeft: cc.Node = null
- @property(cc.Node)
- btnRight: cc.Node = null
- private startX = 0
- private coolTime = false
- private curSelDownItem: cc.Node = null
- private preDownItem = null
- private curIndex = 0
- private bannerDatas = null
- private curSelPoint: cc.Node = null
- private hasClick = false;
- start() {
- this.dragArea.on(cc.Node.EventType.TOUCH_START, this.onDragStart, this)
- this.dragArea.on(cc.Node.EventType.TOUCH_END, this.onDragEnd, this)
- }
- onDisable() {
- this.dragArea.off(cc.Node.EventType.TOUCH_START, this.onDragStart, this)
- this.dragArea.off(cc.Node.EventType.TOUCH_END, this.onDragEnd, this)
- }
- public async setItemData(bannerDatas) {
- this.bannerDatas = bannerDatas.item_data;
- if (this.bannerDatas && this.bannerDatas.length > 0) {
- for (var i = 0; i < this.bannerDatas.length; i++) {
- let point = cc.instantiate(this.pointPrefab)
- point.name = i.toString()
- this.pointLy.addChild(point)
- }
- }
- this.onOpenBigPicNode(0);
- }
- onOpenBigPicNode(index) {
- this.curIndex = index
- let data = this.bannerDatas[this.curIndex]
- this.curSelDownItem = this.item1
- this.curSelDownItem.getComponent(MoreGamePicItem).init(data)
- this.curSelDownItem.x = 0
- this.curSelDownItem.active = true
- this.item2.x = 750
- this.curSelPoint = this.pointLy.getChildByName(this.curIndex.toString())
- this.curSelPoint.getComponent(PointItem).setSel(true)
- this.hasClick = false
- if (this.bannerDatas.length > 1) {
- this.schedule(() => {
- if (!this.hasClick) {
- this.onSelDown(1)
- }
- }, 3, cc.macro.REPEAT_FOREVER, 7)
- }
- else {
- this.btnLeft.active = false
- this.btnRight.active = false
- }
- }
- onLeft() {
- mk.audio.playEffect('button');
- this.hasClick = true
- this.onSelDown(2)
- }
- onRight() {
- mk.audio.playEffect('button');
- this.hasClick = true
- this.onSelDown(1)
- }
- /**
- * 滑动选择
- * @param state 1 向左 2 向右
- */
- onSelDown(state) {
- if (this.coolTime) {
- return
- }
- let preTo = -750
- let data
- if (state == 1) {
- if (this.curIndex + 1 > this.bannerDatas.length - 1) {
- this.curIndex = 0
- }
- else {
- this.curIndex++
- }
- data = this.bannerDatas[this.curIndex]
- if (this.curSelDownItem == this.item1) {
- this.curSelDownItem = this.item2
- this.preDownItem = this.item1
- }
- else {
- this.curSelDownItem = this.item1
- this.preDownItem = this.item2
- }
- this.curSelDownItem.getComponent(MoreGamePicItem).init(data)
- this.curSelDownItem.x = 750
- preTo = -750
- }
- else if (state == 2) {
- if (this.curIndex - 1 < 0) {
- this.curIndex = this.bannerDatas.length - 1
- }
- else {
- this.curIndex--
- }
- data = this.bannerDatas[this.curIndex]
- if (this.curSelDownItem == this.item1) {
- this.curSelDownItem = this.item2
- this.preDownItem = this.item1
- }
- else {
- this.curSelDownItem = this.item1
- this.preDownItem = this.item2
- }
- this.curSelDownItem.getComponent(MoreGamePicItem).init(data)
- this.curSelDownItem.x = -750
- preTo = 750
- }
- this.coolTime = true
- cc.tween(this.preDownItem).to(0.4, { x: preTo }, cc.easeInOut(1)).start()
- cc.tween(this.curSelDownItem).to(0.4, { x: 0 }, cc.easeInOut(1)).call(() => {
- this.onSelPoint()
- this.coolTime = false
- }).start()
- }
- onDragStart(evt) {
- this.hasClick = true
- this.startX = evt.touch._point.x
- }
- onDragEnd(evt) {
- let end = evt.touch._point.x - this.startX
- if (Math.abs(end) > 20) {
- if (end > 0) {
- this.onSelDown(2)
- }
- else {
- this.onSelDown(1)
- }
- }
- }
- onSelPoint() {
- if (this.curSelPoint) {
- this.curSelPoint.getComponent(PointItem).setSel(false)
- }
- this.curSelPoint = this.pointLy.getChildByName(this.curIndex.toString())
- this.curSelPoint.getComponent(PointItem).setSel(true)
- }
- }
|