249 lines
6.6 KiB
JavaScript
249 lines
6.6 KiB
JavaScript
|
|
"use strict";
|
||
|
|
cc._RF.push(module, 'f6a69rEhTJOTpMLLxOmq6zL', 'wnd.theme.entry1');
|
||
|
|
// Scripts/mod/acts/themes/wnd.theme.entry1.js
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
|
||
|
|
/******************************************************************
|
||
|
|
*
|
||
|
|
* 主題入口樣式1
|
||
|
|
*
|
||
|
|
******************************************************************/
|
||
|
|
|
||
|
|
var BridgeWindow = require("bridge.window");
|
||
|
|
var NxSpine = require("nx.fx.spine");
|
||
|
|
var TDefine = require("trace.define");
|
||
|
|
var TTT = TDefine.TraceType;
|
||
|
|
cc.Class({
|
||
|
|
"extends": BridgeWindow,
|
||
|
|
properties: {
|
||
|
|
nodMenu: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node
|
||
|
|
},
|
||
|
|
spBG: {
|
||
|
|
"default": null,
|
||
|
|
type: NxSpine
|
||
|
|
},
|
||
|
|
spSlots: {
|
||
|
|
"default": null,
|
||
|
|
type: NxSpine
|
||
|
|
},
|
||
|
|
imgLogo: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node
|
||
|
|
},
|
||
|
|
nodClose: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node
|
||
|
|
},
|
||
|
|
nodDate: {
|
||
|
|
"default": null,
|
||
|
|
type: cc.Node
|
||
|
|
},
|
||
|
|
lstEntries: {
|
||
|
|
"default": [],
|
||
|
|
type: cc.Node
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// 载入
|
||
|
|
onLoad: function onLoad() {
|
||
|
|
var _this = this;
|
||
|
|
nx.gui.setActive(this.imgLogo, "", false);
|
||
|
|
nx.gui.setActive(this.nodClose, "", false);
|
||
|
|
nx.gui.setActive(this.nodMenu, "", false);
|
||
|
|
nx.gui.setActive(this.nodDate, "", false);
|
||
|
|
nx.gui.setActive(this.spBG, "", false);
|
||
|
|
nx.gui.setActive(this.spSlots, "", false);
|
||
|
|
this.lstEntries.forEach(function (_entry) {
|
||
|
|
nx.gui.setActive(_this.nodDate, "", false);
|
||
|
|
});
|
||
|
|
},
|
||
|
|
// 重载:参数打开
|
||
|
|
onOpenConfigs: function onOpenConfigs(_params) {
|
||
|
|
// 信息构建
|
||
|
|
this.buildData(_params);
|
||
|
|
|
||
|
|
// 背景动画
|
||
|
|
this.doStart();
|
||
|
|
|
||
|
|
// 埋点
|
||
|
|
if (nx.mTrace) {
|
||
|
|
nx.mTrace.trace(TTT.actThemeOpened, _params.theme_id);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// 信息构建
|
||
|
|
buildData: function buildData(_params) {
|
||
|
|
var _this2 = this;
|
||
|
|
// 无效参数
|
||
|
|
if (nx.dt.objEmpty(_params) || !nx.dt.numPositive(_params.theme_id, false) || nx.dt.arrEmpty(_params.theme_holiday_list)) {
|
||
|
|
this.delayClose();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
this.theme = _params;
|
||
|
|
|
||
|
|
// 活动统计
|
||
|
|
this.acts = {};
|
||
|
|
_params.theme_holiday_list.forEach(function (_item) {
|
||
|
|
_this2.acts[_item.cate] = _this2.acts[_item.cate] || {
|
||
|
|
name: nx.text.getKey(_item.cate_name),
|
||
|
|
list: []
|
||
|
|
};
|
||
|
|
_this2.acts[_item.cate].list.push(_item);
|
||
|
|
});
|
||
|
|
|
||
|
|
// 活动日期
|
||
|
|
var secs = this.theme.end_time - client.socket.getTime();
|
||
|
|
if (nx.dt.numPositive(secs, false)) {
|
||
|
|
nx.gui.setColor(this.nodDate, "txt", cc.color().fromHEX("#05F515"));
|
||
|
|
nx.gui.setCdTxt(this.nodDate, "txt", secs);
|
||
|
|
} else {
|
||
|
|
nx.gui.setString(this.nodDate, "txt", nx.text.getKey("已过期"));
|
||
|
|
nx.gui.setColor(this.nodDate, "txt", cc.Color.RED);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
// 背景动画
|
||
|
|
doStart: function doStart() {
|
||
|
|
var _this3 = this;
|
||
|
|
var self = this;
|
||
|
|
var show = function show() {
|
||
|
|
nx.gui.setActive(self.imgLogo, "", true);
|
||
|
|
nx.gui.setActive(self.nodClose, "", true);
|
||
|
|
nx.gui.setActive(self.nodDate, "", true);
|
||
|
|
self.buildMenu();
|
||
|
|
};
|
||
|
|
nx.gui.setActive(this.spBG, "", true);
|
||
|
|
this.spBG.action("show", false, function (_event) {
|
||
|
|
nx.debug("%doStart:" + _event);
|
||
|
|
// 菜单展示
|
||
|
|
if (_event == "done") {
|
||
|
|
show();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 完毕
|
||
|
|
if (_event == "complete") {
|
||
|
|
_this3.spBG.action("loop", true);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
},
|
||
|
|
// -------------------------------------------------------
|
||
|
|
// 菜单相关
|
||
|
|
// -------------------------------------------------------
|
||
|
|
|
||
|
|
// 菜单重建
|
||
|
|
buildMenu: function buildMenu() {
|
||
|
|
nx.gui.setActive(this.nodMenu, "", true);
|
||
|
|
var keys = Object.keys(this.acts);
|
||
|
|
var chds = this.nodMenu.children;
|
||
|
|
for (var i = 0; i < chds.length; ++i) {
|
||
|
|
var tog = chds[i];
|
||
|
|
var ifo = this.acts[keys[i]];
|
||
|
|
if (!ifo) {
|
||
|
|
tog.active = false;
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
tog.active = true;
|
||
|
|
nx.gui.setString(tog, "on/txt", ifo.name);
|
||
|
|
nx.gui.setString(tog, "off/txt", ifo.name);
|
||
|
|
var tip = nx.gui.getComponent(tog, "off/tip", "nx.vb.visible");
|
||
|
|
if (tip) {
|
||
|
|
tip.setTarget(nx.mTip, "acts." + this.theme.theme_id + "." + keys[i]);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
this.onTouchMenu(keys[0]);
|
||
|
|
},
|
||
|
|
// 菜单切换
|
||
|
|
onTouchMenu: function onTouchMenu(_index) {
|
||
|
|
var key = "tog" + _index;
|
||
|
|
this.nodMenu.children.forEach(function (_tog) {
|
||
|
|
nx.gui.setActive(_tog, "off", _tog.name != key);
|
||
|
|
nx.gui.setActive(_tog, "on", _tog.name == key);
|
||
|
|
});
|
||
|
|
this.showPage(_index);
|
||
|
|
},
|
||
|
|
// 页动画展示
|
||
|
|
showPage: function showPage(_index) {
|
||
|
|
var _this4 = this;
|
||
|
|
// 入口重建&隐藏
|
||
|
|
this.lstEntries.forEach(function (_entry) {
|
||
|
|
_entry.active = false;
|
||
|
|
});
|
||
|
|
|
||
|
|
// 活动重建
|
||
|
|
var index = parseInt(_index);
|
||
|
|
var acts = this.acts[index];
|
||
|
|
if (!acts || nx.dt.arrEmpty(acts.list)) {
|
||
|
|
nx.error("$ThemeEntry:\u6D3B\u52A8\u65E0\u6548!" + _index);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 排序
|
||
|
|
// acts.list.sort( ( _a, _b ) => {
|
||
|
|
// return _a.sort - _b.sort;
|
||
|
|
// } );
|
||
|
|
|
||
|
|
// 活动重建
|
||
|
|
this.lstEntries.forEach(function (_node) {
|
||
|
|
_node.ainfo = null;
|
||
|
|
_node.active = false;
|
||
|
|
nx.gui.setString(_node, "txt", "");
|
||
|
|
});
|
||
|
|
for (var i = 0; i < acts.list.length; ++i) {
|
||
|
|
var info = acts.list[i];
|
||
|
|
var node = this.lstEntries[info.sort - 1];
|
||
|
|
if (!node) {
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
node.ainfo = info;
|
||
|
|
node.active = true;
|
||
|
|
nx.gui.setString(node, "txt", nx.text.getKey(info.name));
|
||
|
|
var tip = nx.gui.getComponent(node, "tip", "nx.vb.visible");
|
||
|
|
if (tip) {
|
||
|
|
tip.setTarget(nx.mTip, "acts." + this.theme.theme_id + "." + info.cate + "." + info.camp_id);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
nx.gui.setActive(this.spSlots, "", true);
|
||
|
|
this.spSlots.action("show" + index, false, function (_event) {
|
||
|
|
// 显示入口
|
||
|
|
if (_event == "done") {
|
||
|
|
_this4.lstEntries.forEach(function (_entry) {
|
||
|
|
_entry.active = !!_entry.ainfo;
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
// 完成
|
||
|
|
if (_event == "complete") {
|
||
|
|
_this4.spSlots.action("loop" + index, true);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
},
|
||
|
|
// -------------------------------------------------------
|
||
|
|
// 入口相关
|
||
|
|
// -------------------------------------------------------
|
||
|
|
|
||
|
|
// 点击入口
|
||
|
|
onTouchEntry: function onTouchEntry(_item) {
|
||
|
|
var entry = _item ? _item.parent.ainfo : null;
|
||
|
|
if (nx.dt.objEmpty(entry)) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
var time = new Date();
|
||
|
|
var showtime = entry.end_time - time / 1000;
|
||
|
|
if (nx.dt.objEmpty(entry)) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (showtime < 0) {
|
||
|
|
nx.tbox("StepUpDone");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
nx.debug("$ThemeEntry:\u6D3B\u52A8\u70B9\u51FB!" + entry.name);
|
||
|
|
nx.bridge.jumper.jump2Window(entry.source, {
|
||
|
|
theme: this.theme,
|
||
|
|
entry: entry
|
||
|
|
});
|
||
|
|
this.close();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
cc._RF.pop();
|