在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
-- -- 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;
|
请发表评论