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