Files
fc/dev/project/library/imports/d5/d5fa8be3-745d-4c92-8e62-1f1bbeac6e26.js
2026-05-24 10:21:26 +08:00

129 lines
3.0 KiB
JavaScript

"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();