| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241 |
- /**
- * 生成对应的列表信息
- */
- var listInfoType = cc.Enum({
- none: 0,
- cnt: 1,
- snb: 2
- })
- cc.Class({
- extends: cc.Component,
- properties: {
- listInfoPrefab: {
- default: null,
- type: cc.Prefab,
- serializable: true,
- },
- listContainer: {
- default: null,
- type: cc.Node
- },
- value_set: {
- default: null,
- visible: false
- },
- scroll_view: { //获取scrollview组件
- type: cc.ScrollView,
- default: null,
- },
- HIGH: 80, //每一项的高度
- PAGE_NUM: 4, //每一页4个项
- listType: {
- default: listInfoType.none,
- type: cc.Enum(listInfoType),
- },
- snbData: {
- default: null,
- visible: false
- },
- snbPage: 1,
- snbLimit: 8,
- snbIndex: 0,
- cntData: {
- default: null,
- visible: false
- },
- cntPage: 1,
- cntLimit: 8,
- cntIndex: 0,
- TitleSPriteNode: {
- type: cc.Node,
- default: null,
- },
- snbSprite: {
- type: cc.SpriteFrame,
- default: null,
- },
- cntSprite: {
- type: cc.SpriteFrame,
- default: null,
- },
- cntOutContainer: {
- type: cc.Node,
- default: null,
- },
- outPanelContainer: {
- type: cc.Node,
- default: null,
- },
- outCNTValue: {
- type: cc.Label,
- default: null,
- },
- opt_item_set: []
- },
- // LIFE-CYCLE CALLBACKS:
- onLoad() {
- },
- start() {
- // this.onOpentList();
- this.scroll_view.node.on("scroll-ended", this.on_scroll_ended.bind(this), this);//监听scrollview事件
- this.opt_item_set = [];
- //每次加载3页
- for (var i = 0; i < this.PAGE_NUM * 3; i++) {
- let _info = cc.instantiate(this.listInfoPrefab);
- _info.active = false;
- this.listContainer.addChild(_info);
- this.opt_item_set.push(_info);
- }
- this.start_y = this.listContainer.y;//初始化起始y坐标
- this.start_index = 0; //100项数据里面的起始数据记录索引
- this.load_recode(this.start_index);
- },
- //更新cntList
- onCntUpdateList(list) {
- this.cntData = list;
- },
- //切换数据
- onShowList(type, list, isActive) {
- // console.log("onShowList:", type, list);
- //获取余额
- GlobalD.GameData.onCntCanWithdrawBalance((data) => {
- // console.log("站内收益余额:", GlobalD.GameData.CNTDrawBalance);
- this.outCNTValue.string = "CNT余额:" + Math.floor(GlobalD.GameData.CNTDrawBalance * 100) / 100;
- });
- this.node.active = isActive;
- if (type == "snbList") {
- this.snbData = list;
- this.cntIndex = this.start_index;
- this.value_set = Object.assign([], this.snbData);
- this.start_index = this.snbIndex;
- this.listType = listInfoType.snb;
- this.TitleSPriteNode.getComponent(cc.Sprite).spriteFrame = this.snbSprite;
- this.cntOutContainer.active = false;
- } else if (type == "cntList") {
- this.cntData = list;
- this.snbIndex = this.start_index;
- this.value_set = Object.assign([], this.cntData);
- this.start_index = this.cntIndex;
- this.listType = listInfoType.cnt;
- this.TitleSPriteNode.getComponent(cc.Sprite).spriteFrame = this.cntSprite;
- this.cntOutContainer.active = true;
- }
- this.load_recode(this.start_index);
- },
- load_recode: function (start_index) {
- this.start_index = start_index;
- if (this.opt_item_set.length <= 0) return;
- for (var i = 0; i < this.PAGE_NUM * 3; i++) {
- if (this.value_set.length <= i) {
- this.opt_item_set[i].active = false;
- continue;
- }
- this.opt_item_set[i].active = true;
- let _infoScript = this.opt_item_set[i].getComponent("dappListInfoItem");
- let _item = this.value_set[i];
- if (this.listType == listInfoType.snb) {
- let _temp = {
- listItemName: _item.tranName + (_item.tranAmount + _item.tranAmountPart) + "个",
- listItemDate: _item.createTime,
- remainder: _item.afterSnb + _item.afterSnbPart,
- amount: _item.isAdd == 1 ? '+' + (_item.tranSnb + _item.tranSnbPart) : '-' + (_item.tranSnb + _item.tranSnbPart),
- }
- _infoScript.setInfo(_temp);
- } else if (this.listType == listInfoType.cnt) {
- let _temp = {
- listItemName: "兑换后的cnt数:" + Math.floor(_item.now_amount * 100) / 100,
- listItemDate: _item.create_time,
- remainder: Math.floor(_item.amount * 100) / 100,
- amount: '',
- }
- _infoScript.setCntInfo(_temp);
- }
- }
- },
- load_scroll_recode: function () {
- //向下加载数据
- //当开始位置比value_set的长度小则代表没加载完
- if (this.start_index + this.PAGE_NUM * 3 < this.value_set.length &&
- this.listContainer.y >= this.start_y + this.PAGE_NUM * 2 * this.HIGH)//content超过2个PAGE的高度
- {
- //_autoScrolling在引擎源码中负责处理scrollview的滚动动作
- if (this.scroll_view._autoScrolling) { //等自动滚动结束后再加载防止滚动过快,直接跳到非常后的位置
- this.scroll_view.elastic = false; //关闭回弹效果 美观
- return;
- }
- var down_loaded = this.PAGE_NUM;
- this.start_index += down_loaded;
- if (this.start_index + this.PAGE_NUM * 3 > this.value_set.length) {
- //超过数据范围的长度
- var out_len = this.start_index + this.PAGE_NUM * 3 - this.value_set.length;
- down_loaded -= out_len;
- this.start_index -= out_len;
- }
- this.load_recode(this.start_index);
- this.listContainer.y -= down_loaded * this.HIGH;
- return;
- }
- //向上加载
- if (this.start_index > 0 && this.listContainer.y <= this.start_y) {
- if (this.scroll_view._autoScrolling) {
- this.scroll_view.elastic = false;
- return;
- }
- var up_loaded = this.PAGE_NUM;
- this.start_index -= up_loaded;
- if (this.start_index < 0) {
- up_loaded += this.start_index;
- this.start_index = 0;
- }
- this.load_recode(this.start_index);
- this.listContainer.y += up_loaded * this.HIGH;
- }
- },
- on_scroll_ended: function () {
- this.load_scroll_recode();
- this.scroll_view.elastic = true; //加载结束后自动滚动回弹开启
- },
- update(dt) {
- this.load_scroll_recode();
- },
- onClose() {
- this.node.active = false;
- },
- openOutPannel() {
- this.outPanelContainer.active = true;
- this.outPanelContainer.getComponent("CntInfo").setInfo();
- }
- });
|