PageView.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/game/component/PageView.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, 'bf07comJ2RKTIq+nuMXZ4/m', 'PageView');
  13. // script/game/component/PageView.ts
  14. "use strict";
  15. var __extends = (this && this.__extends) || (function () {
  16. var extendStatics = function (d, b) {
  17. extendStatics = Object.setPrototypeOf ||
  18. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  19. function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
  20. return extendStatics(d, b);
  21. };
  22. return function (d, b) {
  23. extendStatics(d, b);
  24. function __() { this.constructor = d; }
  25. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  26. };
  27. })();
  28. var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  29. var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  30. if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  31. else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  32. return c > 3 && r && Object.defineProperty(target, key, r), r;
  33. };
  34. Object.defineProperty(exports, "__esModule", { value: true });
  35. var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
  36. /**
  37. * 翻页组件类
  38. * - 简单版 无动态加载功能
  39. * - 已知bug,请注意规避:开启回弹后,首尾界面回弹没有考虑 setCurrentPageIndex 导致在setCurrentPageIndex设置之后的位置开始回弹。解决方法:关闭回弹
  40. * @author 薛鸿潇
  41. */
  42. var PageView = /** @class */ (function (_super) {
  43. __extends(PageView, _super);
  44. function PageView() {
  45. var _this = _super !== null && _super.apply(this, arguments) || this;
  46. /** 翻页组件 */
  47. _this.comp_page_view = null;
  48. /** item 容器 */
  49. _this.arr_node_item = [];
  50. return _this;
  51. // update (dt) {}
  52. }
  53. PageView.prototype.onLoad = function () {
  54. this.comp_page_view = this.node.getComponent(cc.PageView);
  55. this.node.on('ui-init', this.init, this); // 初始化列表
  56. this.node.on('ui-clearItem', this.clearItem, this); // 清除页面
  57. this.node.on('ui-backCurPage', this.backCurPage, this); // 返回到当前Index对应的界面【滑动后禁用滑动功能,再打开滑动功能,翻页组件不会自动返回,调用此接口】
  58. };
  59. PageView.prototype.start = function () {
  60. };
  61. /**
  62. * 初始化列表
  63. * @param list_data 数据列表
  64. * @param page_item item预制体
  65. */
  66. PageView.prototype.init = function (list_data, page_item, init_index) {
  67. if (init_index === void 0) { init_index = 0; }
  68. var data_count = list_data.length;
  69. if (!data_count) {
  70. // 刷新时,数据列表是空的
  71. var node_count_1 = this.arr_node_item.length;
  72. for (var i = 0; i < node_count_1; i++) {
  73. this.comp_page_view.removePageAtIndex(i);
  74. this.arr_node_item.splice(i, 1);
  75. }
  76. return;
  77. }
  78. for (var i = 0; i < data_count; i++) {
  79. var node_item = this.arr_node_item[i];
  80. if (!node_item) {
  81. node_item = cc.instantiate(page_item);
  82. this.arr_node_item.push(node_item);
  83. }
  84. // node_item.parent = this.content;
  85. this.comp_page_view.addPage(node_item);
  86. node_item.getComponent(node_item.name).setItemData(list_data[i]);
  87. }
  88. this.comp_page_view.setCurrentPageIndex(init_index);
  89. // 清理多出来的item
  90. var node_count = this.arr_node_item.length;
  91. if (data_count > node_count) {
  92. for (var i = data_count; i < node_count; i++) {
  93. this.comp_page_view.removePageAtIndex(i);
  94. this.arr_node_item.splice(i, 1);
  95. }
  96. }
  97. };
  98. /**
  99. * 返回当前页
  100. */
  101. PageView.prototype.backCurPage = function () {
  102. var index = this.comp_page_view.getCurrentPageIndex();
  103. this.comp_page_view.setCurrentPageIndex(index);
  104. };
  105. /** 清理子节点
  106. * - need_destroy 销毁
  107. */
  108. PageView.prototype.clearItem = function (need_destroy) {
  109. if (need_destroy === void 0) { need_destroy = false; }
  110. // this.comp_page_view.removeAllPages();
  111. // const n_count = this.arr_node_item.length;
  112. // for (let i = 0; i < n_count; i++) {
  113. // if (need_destroy) {
  114. // let node_end = this.arr_node_item.pop();
  115. // node_end.destroy();
  116. // } else {
  117. // this.arr_node_item[i].removeFromParent();
  118. // }
  119. // }
  120. };
  121. PageView = __decorate([
  122. ccclass
  123. ], PageView);
  124. return PageView;
  125. }(cc.Component));
  126. exports.default = PageView;
  127. cc._RF.pop();
  128. }
  129. if (nodeEnv) {
  130. __define(__module.exports, __require, __module);
  131. }
  132. else {
  133. __quick_compile_project__.registerModuleFunc(__filename, function () {
  134. __define(__module.exports, __require, __module);
  135. });
  136. }
  137. })();
  138. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0XFxnYW1lXFxjb21wb25lbnRcXFBhZ2VWaWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBQzVDOzs7OztHQUtHO0FBRUg7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUE4RUM7UUE1RUcsV0FBVztRQUNILG9CQUFjLEdBQWdCLElBQUksQ0FBQztRQUMzQyxjQUFjO1FBQ04sbUJBQWEsR0FBbUIsRUFBRSxDQUFDOztRQXdFM0MsaUJBQWlCO0lBQ3JCLENBQUM7SUF4RUcseUJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUEsUUFBUTtRQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBLE9BQU87UUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBLHNEQUFzRDtJQUNqSCxDQUFDO0lBRUQsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssdUJBQUksR0FBWixVQUFhLFNBQXFCLEVBQUUsU0FBb0IsRUFBRSxVQUFzQjtRQUF0QiwyQkFBQSxFQUFBLGNBQXNCO1FBQzVFLElBQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLGNBQWM7WUFDZCxJQUFNLFlBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbkM7WUFDRCxPQUFPO1NBQ1Y7UUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixTQUFTLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDdEM7WUFDRCxtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxhQUFhO1FBQ2IsSUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDN0MsSUFBSSxVQUFVLEdBQUcsVUFBVSxFQUFFO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNuQztTQUNKO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssOEJBQVcsR0FBbkI7UUFDSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O01BRUU7SUFDTSw0QkFBUyxHQUFqQixVQUFrQixZQUE2QjtRQUE3Qiw2QkFBQSxFQUFBLG9CQUE2QjtRQUMzQyx3Q0FBd0M7UUFDeEMsNkNBQTZDO1FBQzdDLHNDQUFzQztRQUN0QywwQkFBMEI7UUFDMUIsbURBQW1EO1FBQ25ELDhCQUE4QjtRQUM5QixlQUFlO1FBQ2Ysb0RBQW9EO1FBQ3BELFFBQVE7UUFDUixJQUFJO0lBQ1IsQ0FBQztJQTVFZ0IsUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQThFNUI7SUFBRCxlQUFDO0NBOUVELEFBOEVDLENBOUVxQyxFQUFFLENBQUMsU0FBUyxHQThFakQ7a0JBOUVvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcbi8qKlxyXG4gKiDnv7vpobXnu4Tku7bnsbtcclxuICogLSDnroDljZXniYgg5peg5Yqo5oCB5Yqg6L295Yqf6IO9XHJcbiAqIC0g5bey55+lYnVn77yM6K+35rOo5oSP6KeE6YG/77ya5byA5ZCv5Zue5by55ZCO77yM6aaW5bC+55WM6Z2i5Zue5by55rKh5pyJ6ICD6JmRIHNldEN1cnJlbnRQYWdlSW5kZXgg5a+86Ie05Zyoc2V0Q3VycmVudFBhZ2VJbmRleOiuvue9ruS5i+WQjueahOS9jee9ruW8gOWni+WbnuW8ueOAguino+WGs+aWueazle+8muWFs+mXreWbnuW8uVxyXG4gKiBAYXV0aG9yIOiWm+m4v+a9h1xyXG4gKi9cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFnZVZpZXcgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIC8qKiDnv7vpobXnu4Tku7YgKi9cclxuICAgIHByaXZhdGUgY29tcF9wYWdlX3ZpZXc6IGNjLlBhZ2VWaWV3ID0gbnVsbDtcclxuICAgIC8qKiBpdGVtIOWuueWZqCAqL1xyXG4gICAgcHJpdmF0ZSBhcnJfbm9kZV9pdGVtOiBBcnJheTxjYy5Ob2RlPiA9IFtdO1xyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIHRoaXMuY29tcF9wYWdlX3ZpZXcgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlBhZ2VWaWV3KTtcclxuICAgICAgICB0aGlzLm5vZGUub24oJ3VpLWluaXQnLCB0aGlzLmluaXQsIHRoaXMpOy8vIOWIneWni+WMluWIl+ihqFxyXG4gICAgICAgIHRoaXMubm9kZS5vbigndWktY2xlYXJJdGVtJywgdGhpcy5jbGVhckl0ZW0sIHRoaXMpOy8vIOa4hemZpOmhtemdolxyXG4gICAgICAgIHRoaXMubm9kZS5vbigndWktYmFja0N1clBhZ2UnLCB0aGlzLmJhY2tDdXJQYWdlLCB0aGlzKTsvLyDov5Tlm57liLDlvZPliY1JbmRleOWvueW6lOeahOeVjOmdouOAkOa7keWKqOWQjuemgeeUqOa7keWKqOWKn+iDve+8jOWGjeaJk+W8gOa7keWKqOWKn+iDve+8jOe/u+mhtee7hOS7tuS4jeS8muiHquWKqOi/lOWbnu+8jOiwg+eUqOatpOaOpeWPo+OAkVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIneWni+WMluWIl+ihqFxyXG4gICAgICogQHBhcmFtIGxpc3RfZGF0YSDmlbDmja7liJfooahcclxuICAgICAqIEBwYXJhbSBwYWdlX2l0ZW0gaXRlbemihOWItuS9k1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluaXQobGlzdF9kYXRhOiBBcnJheTxhbnk+LCBwYWdlX2l0ZW06IGNjLlByZWZhYiwgaW5pdF9pbmRleDogbnVtYmVyID0gMCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGFfY291bnQgPSBsaXN0X2RhdGEubGVuZ3RoO1xyXG4gICAgICAgIGlmICghZGF0YV9jb3VudCkge1xyXG4gICAgICAgICAgICAvLyDliLfmlrDml7bvvIzmlbDmja7liJfooajmmK/nqbrnmoRcclxuICAgICAgICAgICAgY29uc3Qgbm9kZV9jb3VudCA9IHRoaXMuYXJyX25vZGVfaXRlbS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZV9jb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBfcGFnZV92aWV3LnJlbW92ZVBhZ2VBdEluZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcnJfbm9kZV9pdGVtLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YV9jb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBub2RlX2l0ZW0gPSB0aGlzLmFycl9ub2RlX2l0ZW1baV07XHJcbiAgICAgICAgICAgIGlmICghbm9kZV9pdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBub2RlX2l0ZW0gPSBjYy5pbnN0YW50aWF0ZShwYWdlX2l0ZW0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hcnJfbm9kZV9pdGVtLnB1c2gobm9kZV9pdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBub2RlX2l0ZW0ucGFyZW50ID0gdGhpcy5jb250ZW50O1xyXG4gICAgICAgICAgICB0aGlzLmNvbXBfcGFnZV92aWV3LmFkZFBhZ2Uobm9kZV9pdGVtKTtcclxuICAgICAgICAgICAgbm9kZV9pdGVtLmdldENvbXBvbmVudChub2RlX2l0ZW0ubmFtZSkuc2V0SXRlbURhdGEobGlzdF9kYXRhW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb21wX3BhZ2Vfdmlldy5zZXRDdXJyZW50UGFnZUluZGV4KGluaXRfaW5kZXgpO1xyXG4gICAgICAgIC8vIOa4heeQhuWkmuWHuuadpeeahGl0ZW1cclxuICAgICAgICBjb25zdCBub2RlX2NvdW50ID0gdGhpcy5hcnJfbm9kZV9pdGVtLmxlbmd0aDtcclxuICAgICAgICBpZiAoZGF0YV9jb3VudCA+IG5vZGVfY291bnQpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGRhdGFfY291bnQ7IGkgPCBub2RlX2NvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29tcF9wYWdlX3ZpZXcucmVtb3ZlUGFnZUF0SW5kZXgoaSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFycl9ub2RlX2l0ZW0uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6L+U5Zue5b2T5YmN6aG1XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYmFja0N1clBhZ2UoKSB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5jb21wX3BhZ2Vfdmlldy5nZXRDdXJyZW50UGFnZUluZGV4KCk7XHJcbiAgICAgICAgdGhpcy5jb21wX3BhZ2Vfdmlldy5zZXRDdXJyZW50UGFnZUluZGV4KGluZGV4KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqIOa4heeQhuWtkOiKgueCuSBcclxuICAgICAqIC0gbmVlZF9kZXN0cm95IOmUgOavgVxyXG4gICAgKi9cclxuICAgIHByaXZhdGUgY2xlYXJJdGVtKG5lZWRfZGVzdHJveTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgLy8gdGhpcy5jb21wX3BhZ2Vfdmlldy5yZW1vdmVBbGxQYWdlcygpO1xyXG4gICAgICAgIC8vIGNvbnN0IG5fY291bnQgPSB0aGlzLmFycl9ub2RlX2l0ZW0ubGVuZ3RoO1xyXG4gICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgbl9jb3VudDsgaSsrKSB7XHJcbiAgICAgICAgLy8gICAgIGlmIChuZWVkX2Rlc3Ryb3kpIHtcclxuICAgICAgICAvLyAgICAgICAgIGxldCBub2RlX2VuZCA9IHRoaXMuYXJyX25vZGVfaXRlbS5wb3AoKTtcclxuICAgICAgICAvLyAgICAgICAgIG5vZGVfZW5kLmRlc3Ryb3koKTtcclxuICAgICAgICAvLyAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuYXJyX25vZGVfaXRlbVtpXS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAvLyB9XHJcbiAgICB9XHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ==