"use strict";
|
cc._RF.push(module, '9060fLBPhlATpjglAtlk3gA', 'globalmessagemgr');
|
// Scripts/common/globalmessagemgr.js
|
|
"use strict";
|
|
/*-----------------------------------------------------+
|
* 消息处理类相关处理
|
* @author whjing2012@163.com
|
+-----------------------------------------------------*/
|
window.GlobalMessageMgr = cc.Class({
|
cotr: function cotr() {},
|
properties: {
|
vertical_array: [],
|
vertical_array_tmp: []
|
},
|
statics: {
|
instance: null
|
},
|
showMoveVertical: function showMoveVertical(msg, color) {
|
if (msg == "") return;
|
|
if (this.vertical_array.length >= 3) {
|
this.vertical_array_tmp.push({
|
msg: msg,
|
color: color
|
});
|
|
if (this.vertical_array_tmp.length > 10) {
|
this.vertical_array_tmp.shift();
|
}
|
|
return;
|
}
|
|
var parent_wnd = ViewManager.getInstance().getSceneNode(SCENE_TAG.msg);
|
var container = new cc.Node();
|
container.setAnchorPoint(0.5, 0.5);
|
container.setPosition(0, 300);
|
parent_wnd.addChild(container); //背景
|
|
var image = container.addComponent(cc.Sprite);
|
this.loadRes(PathTool.getUIIconPath("common", "common_90056"), function (sp) {
|
if (container && container.isValid) {
|
image.spriteFrame = sp;
|
}
|
}.bind(this));
|
image.type = cc.Sprite.Type.SLICED;
|
image.sizeMode = cc.Sprite.SizeMode.CUSTOM;
|
image.node.setContentSize(500, 60); // var richText = container.addComponent(cc.RichText);
|
|
var richText = Utils.createRichLabel(24, new cc.Color(0xff, 0xda, 0x2f, 0xff), cc.v2(0.5, 0.5), cc.v2(0, 0), 26, 500, container);
|
richText.handleTouchEvent = false;
|
richText.horizontalAlign = cc.macro.TextAlignment.CENTER; // richText.maxWidth = 500;
|
// richText.fontSize = 24;
|
// richText.node.color = new cc.Color(0xff, 0xda, 0x2f, 0xff);
|
|
richText.string = StringUtil.parseStr(msg).string;
|
var resArr = StringUtil.parseStr(msg).resArr;
|
|
if (resArr) {
|
for (var i in resArr) {
|
this.loadRes(PathTool.getItemRes(resArr[i]), function (resObject) {
|
if (container && container.isValid) {
|
richText.addSpriteFrame(resObject);
|
}
|
}.bind(this));
|
}
|
}
|
|
container.rict_text_nd = richText.node;
|
var seq = cc.sequence( // cc.moveBy(1, 0, 100),
|
cc.delayTime(2), cc.removeSelf(), cc.callFunc(function () {
|
var node = this.vertical_array.shift();
|
node.destroy();
|
node = null;
|
|
if (this.vertical_array_tmp.length > 0) {
|
var o = this.vertical_array_tmp.shift();
|
this.showMoveVertical(o.msg, o.color);
|
}
|
}, this));
|
this.vertical_array.push(container);
|
this.sortPosition();
|
container.rict_text_nd.runAction(seq);
|
},
|
sortPosition: function sortPosition() {
|
var size = this.vertical_array.length;
|
|
if (size > 0) {
|
var _y = 230; //起始点
|
|
var _x = 0;
|
var last_height = this.vertical_array[size - 1].height;
|
var last_y;
|
|
for (var i = size; i > 0; i--) {
|
var item = this.vertical_array[i - 1];
|
if (item == null) return;
|
item.stopAllActions();
|
|
if (size == i) {
|
item.setPosition(cc.v2(_x, _y));
|
last_y = _y + item.height;
|
} else {
|
item.setPosition(cc.v2(_x, last_y));
|
last_y = last_y + item.height;
|
}
|
|
item.runAction(cc.moveBy(0.5, 0, last_height));
|
}
|
}
|
},
|
loadRes: function loadRes(path, callback) {
|
if (this.res_list == null) {
|
this.res_list = {};
|
}
|
|
if (this.res_list[path]) {
|
callback(this.res_list[path]);
|
return;
|
} else {
|
LoaderManager.getInstance().loadRes(path, function (res_object) {
|
if (this.is_close || this["delete"]) {
|
return;
|
}
|
|
this.res_list[path] = res_object;
|
callback(res_object);
|
}.bind(this));
|
}
|
},
|
showPowerMove: function showPowerMove(num, res, old_num) {
|
var MainUIController = require("mainui_controller");
|
|
MainUIController.getInstance().showPower(num, old_num);
|
},
|
showMoveHorizontal: function showMoveHorizontal(msg, color) {
|
var curr_scene = ViewManager.getInstance().getSceneNode(SCENE_TAG.msg);
|
if (!curr_scene) return;
|
var self = this;
|
var size = cc.size(682, 38);
|
|
if (this.per_bg_icon == null) {
|
var node = new cc.Node();
|
var widget = node.addComponent(cc.Widget);
|
widget.isAlignTop = true;
|
widget.isAlignHorizontalCenter = true;
|
widget.top = 55;
|
widget.horizontalCenter = 0;
|
var image = node.addComponent(cc.Sprite);
|
this.loadRes(PathTool.getUIIconPath("common", "common_90056"), function (sp) {
|
if (node && node.isValid) {
|
image.spriteFrame = sp;
|
}
|
}.bind(this));
|
image.type = cc.Sprite.Type.SLICED;
|
image.sizeMode = cc.Sprite.SizeMode.CUSTOM;
|
node.setAnchorPoint(0.5, 1);
|
node.setContentSize(size);
|
curr_scene.addChild(node);
|
widget.updateAlignment(); // node.setPosition(0, SCREEN_HEIGHT*0.5 - 55)
|
|
this.per_bg_icon = node;
|
}
|
|
if (this.msg_save_arr == null) {
|
this.msg_save_arr = [];
|
} //创建文本
|
|
|
function createLabel(msg, color) {
|
// msg = "<size = 15>" + msg + "</size>"
|
var temp_msg = self.createhorizontalLabel(msg, color, 0, 20);
|
temp_msg.node.setAnchorPoint(cc.v2(0, 0.5));
|
temp_msg.node.setPosition(cc.v2(0, -size.height / 2 - size.height));
|
self.per_bg_icon.addChild(temp_msg.node);
|
return temp_msg;
|
} //只存储5条传闻
|
|
|
if (this.msg_save_arr.length > 5) {
|
this.msg_save_arr.pop();
|
}
|
|
this.msg_save_arr.push({
|
msg: msg,
|
delay_time: 3,
|
color: color
|
}); //如果当前有滚动
|
|
if (this.has_msg_moveing == true) return;
|
|
function deleteMsg() {
|
self.has_msg_moveing = false;
|
|
if (self.per_move_msg_word) {
|
self.per_move_msg_word.node.destroy();
|
self.per_move_msg_word = null;
|
}
|
|
if (self.msg_save_arr.length > 0) {
|
self.has_msg_moveing = true;
|
var temp_tab = self.msg_save_arr.pop();
|
var msg_word = createLabel(temp_tab.msg, temp_tab.color);
|
var show_time = temp_tab.delay_time || 3;
|
self.per_move_msg_word = msg_word;
|
var sequence_1 = null;
|
var font_size = msg_word.node;
|
|
if (font_size.width > size.width) {
|
msg_word.node.x = -size.width / 2;
|
var move_to_ = cc.moveTo(0.1, cc.v2(msg_word.node.x, -size.height / 2));
|
var move_to = cc.moveTo(show_time, cc.v2(msg_word.node.x - (font_size.width - size.width) - 5, -size.height / 2));
|
var delay_time = cc.delayTime(1);
|
sequence_1 = cc.sequence(move_to_, move_to, delay_time, cc.callFunc(deleteMsg));
|
} else {
|
msg_word.node.x = -font_size.width / 2;
|
|
var _delay_time = cc.delayTime(show_time);
|
|
var _move_to_ = cc.moveTo(0.1, cc.v2(msg_word.node.x, -size.height / 2));
|
|
sequence_1 = cc.sequence(_move_to_, _delay_time, cc.callFunc(deleteMsg));
|
}
|
|
msg_word.node.runAction(sequence_1);
|
} else {
|
self.msg_save_arr = null;
|
|
if (self.per_bg_icon) {
|
self.per_bg_icon.destroy();
|
self.per_bg_icon = null;
|
}
|
}
|
}
|
|
deleteMsg();
|
},
|
createhorizontalLabel: function createhorizontalLabel(msg, color, max_width, fontsize) {
|
var richText = new cc.Node().addComponent(cc.RichText);
|
richText.node.color = color || new cc.Color(25, 30, 40);
|
richText.maxWidth = max_width || 0;
|
richText.fontSize = fontsize;
|
richText.string = msg;
|
return richText;
|
}
|
}); // 实例化单利
|
|
GlobalMessageMgr.getInstance = function () {
|
if (!GlobalMessageMgr.instance) {
|
GlobalMessageMgr.instance = new GlobalMessageMgr();
|
}
|
|
return GlobalMessageMgr.instance;
|
}; //全局 message 提示方法
|
|
|
window.message = function (msg, color) {
|
if (msg == null || msg == "") {
|
return;
|
}
|
|
GlobalMessageMgr.getInstance().showMoveVertical(msg, color);
|
}; //资产提示
|
|
|
window.showAssetsMsg = function (msg, color) {
|
message(msg, color);
|
};
|
|
cc._RF.pop();
|