"use strict"; cc._RF.push(module, '6ee7ccEDzhEoIy5TF2Vg2Sg', 'cmp.item.select.wnd'); // Scripts/mod/backpack/cmps/cmp.item.select.wnd.js "use strict"; /****************************************************************** * * 道具选择界面 * ******************************************************************/ var BridgeWindow = require("bridge.window"); var FxSVC = require("nx.fx.sv.expand"); cc.Class({ "extends": BridgeWindow, properties: { nodRoot: { "default": null, type: cc.Node }, svcList: { "default": null, type: FxSVC }, nodCount: { "default": null, type: cc.Node } }, // 重载:参数打开 onOpenConfigs: function onOpenConfigs(_params) { /** * params { * items: 列表, * count: 选择上限, * selects: 已选择, * fnSelector: 选择验证(默认空) * fixed: 是否固定选择上限数(默认false) * flag: 特殊标记 } */ // 参数判定 this.params = _params.params; this.cb = _params.cb || []; // 重建 this.rebuild(); }, // 重载:关闭前 onPreClosed: function onPreClosed() { this.svcList.rebuild([]); }, // 重建 rebuild: function rebuild() { var _this = this; // 空 var empty = nx.dt.arrEmpty(this.params.items); nx.gui.setActive(this.nodRoot, "empty", empty); nx.gui.setActive(this.nodRoot, "panel", !empty); if (empty) { return; } // 重建 this.svcList.rebuild(this.params.items); // 已选中 var selects = this.params.selects || []; var _loop = function _loop() { var tm = _this.params.items[i]; if (tm && nx.dt.arrMember(selects, null, function (_p) { return _p.id == tm.id; })) { _this.svcList.addFocus(i); } }; for (var i = 0; i < this.params.items.length; ++i) { _loop(); } // 数量更新 this.freshCount(); }, // 数量更新 freshCount: function freshCount() { var key = ""; var total = this.params.count; if (total > 1) { var cnt = this.svcList.focusList.length; key = cnt + "/" + total; } nx.gui.setString(this.nodCount, "", key); }, // 选中切换 onFocusChanged: function onFocusChanged(_item) { // 空 if (nx.dt.objEmpty(_item) || nx.dt.objEmpty(_item.mdata)) { return; } // 取消选中 if (this.svcList.isFocus(_item.index)) { this.svcList.removeFocus(_item.index); this.freshCount(); return; } // 选择验证 if (nx.dt.fnGood(this.params.fnSelector) && !this.params.fnSelector(this, _item.mdata)) { return; } // 是不是单选 var single = this.params.count == 1; if (single) { this.svcList.cleanFocus(); this.svcList.addFocus(_item.index); this.freshCount(); return; } // 选中添加 if (this.svcList.focusList.length < this.params.count) { this.svcList.addFocus(_item.index); this.freshCount(); return; } }, // 点击确认 onTouchConfirm: function onTouchConfirm() { var _this2 = this; // 统计所选 var ret = []; this.svcList.focusList.forEach(function (_idx) { ret.push(_this2.params.items[_idx]); }); // 返回 nx.dt.fnInvoke(this.cb, ret); } }); cc._RF.pop();