"use strict"; cc._RF.push(module, 'd5fa8vjdF1Mko5iHxu+rG4m', 'cmp.com.menu.wnd'); // Scripts/mod/common/cmp.com.menu.wnd.js "use strict"; /****************************************************************** * * 通用菜单多页切换复合窗体 * ******************************************************************/ var BridgeWindow = require("bridge.window"); var _require = require("bridge.panels"), MENUS = _require.MENUS; cc.Class({ "extends": BridgeWindow, properties: { cfgKey: { "default": "", displayName: "配置键" }, defPage: { "default": "", displayName: "默认页" }, menu: { "default": null, type: cc.Node }, pages: { "default": null, type: cc.Node } }, // 载入 onLoad: function onLoad() { // 菜单初始化 this.menu.children.forEach(function (_item) { nx.gui.setActive(_item, "on", false); nx.gui.setActive(_item, "off", true); }); }, // 重载:参数打开 onOpenConfigs: function onOpenConfigs(_params) { // 配置获取 this.cfgs = MENUS[this.cfgKey]; if (nx.dt.objEmpty(this.cfgs)) { nx.error("$MenuWnd:配置缺失! ", this.cfgKey); this.delayClose(); return; } // 起始页 var pname = _params.page || _params.p1 || _params.fromOther || this.defPage; if (nx.dt.strEmpty(pname)) { for (var name in this.cfgs) { pname = name; break; } } // 切换菜单 this.togMenu(pname); }, // 重载:关闭前 onPreClosed: function onPreClosed() { this.pages.children.forEach(function (_page) { var cmp = _page.getComponent("cmp.com.menu.page"); if (cmp) { cmp.onPreClosed(); } }); }, // 切换菜单 togMenu: function togMenu(_key) { var _this = this; // 忽略 if (nx.dt.strEmpty(_key) || this.curKey == _key) { return; } // 菜单项切换 this.menu.children.forEach(function (_item) { nx.gui.setActive(_item, "on", _item.name == _key); nx.gui.setActive(_item, "off", _item.name != _key); }); // 页面切换 var page = nx.gui.find(this.pages, _key); if (page) { this.pages.children.forEach(function (_page) { nx.gui.setActive(_page, "", _page.name == _key); }); return; } // 页配置 var info = this.cfgs[_key]; if (nx.dt.objEmpty(info)) { nx.error("$MenuWnd:无效配置页!", _key); return; } // 需要加载 nx.res.loadPrefab(this.cfgs[_key].prefab, function (_err, _data) { if (_err) { return; } var page = cc.instantiate(_data); page.name = _key; page.parent = _this.pages; // let cmp = node.getComponent( "act.page.base" ); // if( cmp ) { // cmp.build( _item.mdata ); // } _this.pages.children.forEach(function (_page) { nx.gui.setActive(_page, "", _page.name == _key); }); }, true); }, // 菜单切换 onTouchMenu: function onTouchMenu(_key) { this.togMenu(_key); } }); cc._RF.pop();