--
-- Author: chentong
-- Date: 2014-3-24
-- 系统提示:
-- 先做个简单的,在中上位置出现提示,逐渐消失,如果有新提示,则直接删除旧提示。
-- 规则:
-- 1、根据消息编号和语言,从表中找到提示内容,如果有参数则格式化;
--
-- 需要扩展:主要是字体,大小,颜色,类型等的一些格式化,不知道CCLabelTTF支不支持,后续研究。
--
local Prompt = require(__APP_PACKAGE_NAME__ .. ".network.cliprompt");
local UISystemTips = class("UISystemTips", Behavior);
function UISystemTips:ctor( )
UISystemTips.super.ctor(self);
self.Name = "UISystemTips"
self.layer = nil;
self.labTips = nil;
self.imgBg = nil;
self.labTipsBg = nil; -- 对话框上的提示。
self.func = nil;
self.btnConfirm = nil;
self.btnCancel = nil;
end
function UISystemTips:onAwake( )
print("UISystemTips:onAwake", self.id);
-- 创建层:
self.layer = CCLayer:create();
self.labTips = CCLabelTTF:create("", FONT_NAME, 30, CCSizeMake(600,0), kCCTextAlignmentCenter);
self.labTips:setAnchorPoint(0.5, 1);
self.labTips:setPosition(math.round(CONFIG_SCREEN_WIDTH/2), CONFIG_SCREEN_HEIGHT-100);
self.labTips:setColor(ccc3(230, 120, 230));
self.layer:addChild(self.labTips);
SceneM.addChildToGlobalNode(self.layer);
self.layer:setTouchEnabled(false);
self.layer:registerScriptTouchHandler(function (tag)
return self.layer:isVisible();
end, false, -200, true);
-- 公共框:
self.imgBg = CCSprite:create(res.common.textures["comm_dlg"]);
self.imgBg:setPosition(ccp(CONFIG_SCREEN_WIDTH/2, CONFIG_SCREEN_HEIGHT/2));
self.imgBg:setVisible(false);
local sizeBg = self.imgBg:getContentSize();
-- self.imgBg:setScale(0.7);
self.layer:addChild(self.imgBg);
-- 提示文字:
self.labTipsBg = CCLabelTTF:create("", FONT_NAME, 30, CCSizeMake(460,0), kCCTextAlignmentCenter);
self.labTipsBg:setAnchorPoint(0.5, 1);
self.labTipsBg:setPosition(math.round(sizeBg.width/2), sizeBg.height-80);
self.labTipsBg:setColor(ccc3(230, 120, 230));
self.imgBg:addChild(self.labTipsBg);
-- 确定按钮:
print("\n\n\n====================" .. self:GetTipsString("already_recuit"))
self.btnConfirm = CCMenuItemImage:create(res.common.textures["comm_btn"],res.common.textures["comm_btn"]);
self.btnConfirm:registerScriptTapHandler(function (tag)
if self.func and type(self.func) == "function" then
self.func(true);
end
self:ChangeDlgState(false);
return true;
end);
self.btnConfirm:setPosition(ccp(sizeBg.width/3, 20));
local labConfirm = CCLabelTTF:create(self:GetTipsString("confirm"), FONT_NAME, 30);
labConfirm:setPosition(ccp(65, 35));
self.btnConfirm:addChild(labConfirm);
-- 取消按钮:
self.btnCancel = CCMenuItemImage:create(res.common.textures["comm_btn"],res.common.textures["comm_btn"]);
self.btnCancel:registerScriptTapHandler(function (tag)
if self.func and type(self.func) == "function" then
self.func(false);
end
self:ChangeDlgState(false);
return true;
end);
self.btnCancel:setPosition(ccp(sizeBg.width*2/3, 20));
local labCancel = CCLabelTTF:create(self:GetTipsString("cancel"), FONT_NAME, 30);
labCancel:setPosition(ccp(65, 35));
self.btnCancel:addChild(labCancel);
local menu = CCMenu:create();
menu:setTouchPriority(-230);
menu:setPosition(0, 0)
menu:addChild(self.btnConfirm, 1);
menu:addChild(self.btnCancel, 1);
self.imgBg:addChild(menu);
end
function UISystemTips:onEnter( )
end
function UISystemTips:onExit( )
--
SceneM.removeChildToGlobalNode(self.layer);
end
function UISystemTips:getName( )
return self.Name;
end
-- 系统提示:
-- idx:为信息号,可从表(cliprompt)中找到对应信息;如果表中找不到,则直接输出信息号。
function UISystemTips:SystemTips(idx, ...)
if idx==nil then
echoError("UISystemTip:SystemTip Error: 传入空的错误码!");
return
end
self.labTips:stopAllActions();
-- 根据语言和id,从表中找到提示信息:
local strTip = self:GetTipsString(idx) or idx;
-- 可以做些字符串解析:如改变字体颜色,变化成图标,加上某个前缀等等。
-- 根据入参,格式化:
if ... ~=nil then
strTip = string.format(strTip, ...);
end
self.labTips:setString(strTip);
-- 创建消失动画。
local actionFadeOut = CCFadeOut:create(5);
self.labTips:runAction(actionFadeOut);
end
-- 系统提示框:
-- idx:为信息号,可从表(cliprompt)中找到对应信息;
-- fun(可选):回调的函数,原型为fun(bCancel);
-- type(可选):两种类型:1、确定按钮;2、确定和取消按钮;默认只有确定按钮。
-- ...(可选):参数列表。
function UISystemTips:SystemDlg( idx, func, nType, ...)
-- 根据语言和id,从表中找到提示信息:
local strTip = self:GetTipsString(idx) or idx;
-- 根据入参,格式化:
if ... ~=nil then
strTip = string.format(strTip, ...);
end
self.labTipsBg:setString(strTip);
-- 默认为类型1,即一个确定按钮;
local nDlgType = nType or 1;
local sizeBg = self.imgBg:getContentSize();
if nDlgType==1 then
-- 1:隐藏取消按钮;确定按钮居中:
self.btnCancel:setVisible(false);
self.btnConfirm:setPosition(ccp(sizeBg.width/2, 20));
else
-- 2:显示取消按钮;确定按钮左移:
self.btnCancel:setVisible(true);
self.btnConfirm:setPosition(ccp(sizeBg.width/3, 20));
end
self.func = func;
self:ChangeDlgState(true);
end
function UISystemTips:ChangeDlgState(bOpen)
if bOpen then
self.imgBg:setVisible(true);
self.layer:setTouchEnabled(true);
else
self.imgBg:setVisible(false);
self.layer:setTouchEnabled(false);
end
end
function UISystemTips:GetTipsString( idx )
-- 如果是number:
local strIdx;
if type(idx)=="number" then
strIdx = Prompt.CliPrompt[idx];
if strIdx==nil then
echoError("没有找到指定错误码:"..idx);
return "错误码:"..idx;
end
elseif type(idx)=="string" then
strIdx = idx;
else
echoError("错误的解析码类型。");
end
local tabTips = Prompt.CliPrompt[strIdx];
if not tabTips then
echoError("没有找到指定提示文本:"..strIdx);
return nil;
end
return tabTips[LANGUAGE];
end
return UISystemTips;