--
-- 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, , CCSizeMake(,), kCCTextAlignmentCenter);
self.labTips:setAnchorPoint(0.5, );
self.labTips:setPosition(math.round(CONFIG_SCREEN_WIDTH/), CONFIG_SCREEN_HEIGHT-);
self.labTips:setColor(ccc3(, , ));
self.layer:addChild(self.labTips); SceneM.addChildToGlobalNode(self.layer); self.layer:setTouchEnabled(false);
self.layer:registerScriptTouchHandler(function (tag)
return self.layer:isVisible();
end, false, -, true); -- 公共框:
self.imgBg = CCSprite:create(res.common.textures["comm_dlg"]);
self.imgBg:setPosition(ccp(CONFIG_SCREEN_WIDTH/, CONFIG_SCREEN_HEIGHT/));
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, , CCSizeMake(,), kCCTextAlignmentCenter);
self.labTipsBg:setAnchorPoint(0.5, );
self.labTipsBg:setPosition(math.round(sizeBg.width/), sizeBg.height-);
self.labTipsBg:setColor(ccc3(, , ));
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/, ));
local labConfirm = CCLabelTTF:create(self:GetTipsString("confirm"), FONT_NAME, );
labConfirm:setPosition(ccp(, ));
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*/, ));
local labCancel = CCLabelTTF:create(self:GetTipsString("cancel"), FONT_NAME, );
labCancel:setPosition(ccp(, ));
self.btnCancel:addChild(labCancel); local menu = CCMenu:create();
menu:setTouchPriority(-);
menu:setPosition(, )
menu:addChild(self.btnConfirm, );
menu:addChild(self.btnCancel, );
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();
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 ;
local sizeBg = self.imgBg:getContentSize();
if nDlgType== then
-- 1:隐藏取消按钮;确定按钮居中:
self.btnCancel:setVisible(false);
self.btnConfirm:setPosition(ccp(sizeBg.width/, ));
else
-- 2:显示取消按钮;确定按钮左移:
self.btnCancel:setVisible(true);
self.btnConfirm:setPosition(ccp(sizeBg.width/, ));
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;

lua -- 系统提示框的更多相关文章

  1. 从service弹出系统级自定义提示框,可在任意页面弹出

    添加权限 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> // 显示 ...

  2. 自定义iOS 中推送消息 提示框

    看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢? 因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消 ...

  3. JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示

    前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...

  4. 自定义 Material Design风格的提示框

    关闭 自定义 Material Design风格的提示框 2016-04-24 10:55 152人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 其实在14年谷歌 ...

  5. iOS开发——UI基础-提示框

    提示框的种类有很多,废话不多说,直接上代码 一.文本提示框 运行结果如下: 代码实现如下: @interface ViewController () // 添加方法 - (IBAction)add; ...

  6. Delphi中弹出提示框的四种方法

    参考:http://blog.itpub.net/8432156/viewspace-924843/ 更为详细的内容请参见:http://blog.csdn.net/akof1314/article/ ...

  7. 在ASP.NET中引用自定义提示框

    在html网页中自定义提示框 正文: 在一般的B/S架构中项目,与用户的交互信息是非常重要的.在一般的情况下,设计人员都在把用户信息呈现在html中,用div和span去弹出相关信息.对于一般的情况而 ...

  8. Bootstrap:弹出框和提示框效果以及代码展示

    前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...

  9. Win7关机出现关闭程序提示框

    运行输入Gpedit.msc回车打开组策略,在左侧选计算机配置/管理模板/系统/关机选项,在右侧双击“关闭会阻止或取消关机的应用程序的自动终止功能”,在打开的提示框中选“已启用”,按确定即可.

随机推荐

  1. Burp Suite之Scaner模块(三)

    Burp Suite之Scaner模块(三) Scaner模块配置详解 Scan Queue Active Scanning(主动扫描)过程通常包括发送大量请求到服务器为所扫描的每个基本的请求,这可能 ...

  2. 使用OutputStream向屏幕上输出内容

    使用OutputStream向屏幕上输出内容 /** * 使用OutputStream向屏幕上输出内容 */ import java.io.*; class hello { public static ...

  3. OSINT系列:网站信任评估WOT

     OSINT系列:网站信任评估WOT Web of Trust(WOT)是芬兰的一家网站信任评估服务公司.它通过收集用户对网站的评价,来评估网站的可信任度.在该公司网站www.mywot.com,用户 ...

  4. 用postcss cli运行postcss

    一.验证autoprefixer插件1.新建项目 新建文件夹postcss: 在postcss目录中,新建package.json文件,新建css文件夹: 在css文件夹新建outfile.css,i ...

  5. Css实现元素的垂直居中

    前言: 在写CSS的时候让元素在高度固定的容器中垂直居中是很简单的,譬如设置容器的padding或者元素的margin之类的都可以做到:让元素在容器中水平居中也有text-align:center.m ...

  6. BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)

    题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...

  7. Python3内置函数——reversed() = 翻转我的世界

    认识reversed单词 reversed 英[rɪ'vɜ:st] 美[rɪ'vɜst] adj. 颠倒的:相反的:(判决等)撤销的 v. 颠倒(reverse的过去式和过去分词):翻转 help(r ...

  8. 将java项目传输到centos7服务端

    http://www.xdowns.com/so.asp?keyword=flashfxp 下载flashfxp之后进行一系列配置即可 https://cloud.baidu.com/?from=co ...

  9. 10个提升MySQL性能的小技巧

    从工作量分析到索引的三条规则,这些专家见解肯定会让您的MySQL服务器尖叫. 在所有的关系数据库中,MySQL已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之 ...

  10. 5款替代微软Visio的开源免费软件

    提到流程图和图表设计,自然会想到微软出品的Office Visio,它是一款强大的流程图设计工具.Visio并不在Office标准套装中,需要额外付费购买,这可能会带来某些不便.一方面,并不是所有人都 ...