129 lines
3.0 KiB
JavaScript
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(); |