1. --
  2. -- Author: chentong
  3. -- Date: 2014-3-24
  4. -- 系统提示:
  5. -- 先做个简单的,在中上位置出现提示,逐渐消失,如果有新提示,则直接删除旧提示。
  6. -- 规则:
  7. -- 1、根据消息编号和语言,从表中找到提示内容,如果有参数则格式化;
  8. --
  9. -- 需要扩展:主要是字体,大小,颜色,类型等的一些格式化,不知道CCLabelTTF支不支持,后续研究。
  10. --
  11. local Prompt = require(__APP_PACKAGE_NAME__ .. ".network.cliprompt");
  12.  
  13. local UISystemTips = class("UISystemTips", Behavior);
  14.  
  15. function UISystemTips:ctor( )
  16. UISystemTips.super.ctor(self);
  17. self.Name = "UISystemTips"
  18. self.layer = nil;
  19. self.labTips = nil;
  20. self.imgBg = nil;
  21. self.labTipsBg = nil; -- 对话框上的提示。
  22. self.func = nil;
  23. self.btnConfirm = nil;
  24. self.btnCancel = nil;
  25. end
  26.  
  27. function UISystemTips:onAwake( )
  28. print("UISystemTips:onAwake", self.id);
  29.  
  30. -- 创建层:
  31. self.layer = CCLayer:create();
  32.  
  33. self.labTips = CCLabelTTF:create("", FONT_NAME, , CCSizeMake(,), kCCTextAlignmentCenter);
  34. self.labTips:setAnchorPoint(0.5, );
  35. self.labTips:setPosition(math.round(CONFIG_SCREEN_WIDTH/), CONFIG_SCREEN_HEIGHT-);
  36. self.labTips:setColor(ccc3(, , ));
  37. self.layer:addChild(self.labTips);
  38.  
  39. SceneM.addChildToGlobalNode(self.layer);
  40.  
  41. self.layer:setTouchEnabled(false);
  42. self.layer:registerScriptTouchHandler(function (tag)
  43. return self.layer:isVisible();
  44. end, false, -, true);
  45.  
  46. -- 公共框:
  47. self.imgBg = CCSprite:create(res.common.textures["comm_dlg"]);
  48. self.imgBg:setPosition(ccp(CONFIG_SCREEN_WIDTH/, CONFIG_SCREEN_HEIGHT/));
  49. self.imgBg:setVisible(false);
  50. local sizeBg = self.imgBg:getContentSize();
  51. -- self.imgBg:setScale(0.7);
  52. self.layer:addChild(self.imgBg);
  53. -- 提示文字:
  54. self.labTipsBg = CCLabelTTF:create("", FONT_NAME, , CCSizeMake(,), kCCTextAlignmentCenter);
  55. self.labTipsBg:setAnchorPoint(0.5, );
  56. self.labTipsBg:setPosition(math.round(sizeBg.width/), sizeBg.height-);
  57. self.labTipsBg:setColor(ccc3(, , ));
  58. self.imgBg:addChild(self.labTipsBg);
  59.  
  60. -- 确定按钮:
  61. print("\n\n\n====================" .. self:GetTipsString("already_recuit"))
  62. self.btnConfirm = CCMenuItemImage:create(res.common.textures["comm_btn"],res.common.textures["comm_btn"]);
  63. self.btnConfirm:registerScriptTapHandler(function (tag)
  64. if self.func and type(self.func) == "function" then
  65. self.func(true);
  66. end
  67. self:ChangeDlgState(false);
  68. return true;
  69. end);
  70. self.btnConfirm:setPosition(ccp(sizeBg.width/, ));
  71. local labConfirm = CCLabelTTF:create(self:GetTipsString("confirm"), FONT_NAME, );
  72. labConfirm:setPosition(ccp(, ));
  73. self.btnConfirm:addChild(labConfirm);
  74. -- 取消按钮:
  75. self.btnCancel = CCMenuItemImage:create(res.common.textures["comm_btn"],res.common.textures["comm_btn"]);
  76. self.btnCancel:registerScriptTapHandler(function (tag)
  77. if self.func and type(self.func) == "function" then
  78. self.func(false);
  79. end
  80. self:ChangeDlgState(false);
  81. return true;
  82. end);
  83. self.btnCancel:setPosition(ccp(sizeBg.width*/, ));
  84. local labCancel = CCLabelTTF:create(self:GetTipsString("cancel"), FONT_NAME, );
  85. labCancel:setPosition(ccp(, ));
  86. self.btnCancel:addChild(labCancel);
  87.  
  88. local menu = CCMenu:create();
  89. menu:setTouchPriority(-);
  90. menu:setPosition(, )
  91. menu:addChild(self.btnConfirm, );
  92. menu:addChild(self.btnCancel, );
  93. self.imgBg:addChild(menu);
  94. end
  95.  
  96. function UISystemTips:onEnter( )
  97.  
  98. end
  99.  
  100. function UISystemTips:onExit( )
  101. --
  102. SceneM.removeChildToGlobalNode(self.layer);
  103. end
  104.  
  105. function UISystemTips:getName( )
  106. return self.Name;
  107. end
  108.  
  109. -- 系统提示:
  110. -- idx:为信息号,可从表(cliprompt)中找到对应信息;如果表中找不到,则直接输出信息号。
  111. function UISystemTips:SystemTips(idx, ...)
  112. if idx==nil then
  113. echoError("UISystemTip:SystemTip Error: 传入空的错误码!");
  114. return
  115. end
  116.  
  117. self.labTips:stopAllActions();
  118.  
  119. -- 根据语言和id,从表中找到提示信息:
  120. local strTip = self:GetTipsString(idx) or idx;
  121. -- 可以做些字符串解析:如改变字体颜色,变化成图标,加上某个前缀等等。
  122.  
  123. -- 根据入参,格式化:
  124. if ... ~=nil then
  125. strTip = string.format(strTip, ...);
  126. end
  127.  
  128. self.labTips:setString(strTip);
  129. -- 创建消失动画。
  130. local actionFadeOut = CCFadeOut:create();
  131. self.labTips:runAction(actionFadeOut);
  132. end
  133.  
  134. -- 系统提示框:
  135. -- idx:为信息号,可从表(cliprompt)中找到对应信息;
  136. -- fun(可选):回调的函数,原型为fun(bCancel);
  137. -- type(可选):两种类型:1、确定按钮;2、确定和取消按钮;默认只有确定按钮。
  138. -- ...(可选):参数列表。
  139. function UISystemTips:SystemDlg( idx, func, nType, ...)
  140. -- 根据语言和id,从表中找到提示信息:
  141. local strTip = self:GetTipsString(idx) or idx;
  142. -- 根据入参,格式化:
  143. if ... ~=nil then
  144. strTip = string.format(strTip, ...);
  145. end
  146. self.labTipsBg:setString(strTip);
  147.  
  148. -- 默认为类型1,即一个确定按钮;
  149. local nDlgType = nType or ;
  150. local sizeBg = self.imgBg:getContentSize();
  151. if nDlgType== then
  152. -- 1:隐藏取消按钮;确定按钮居中:
  153. self.btnCancel:setVisible(false);
  154. self.btnConfirm:setPosition(ccp(sizeBg.width/, ));
  155. else
  156. -- 2:显示取消按钮;确定按钮左移:
  157. self.btnCancel:setVisible(true);
  158. self.btnConfirm:setPosition(ccp(sizeBg.width/, ));
  159. end
  160.  
  161. self.func = func;
  162. self:ChangeDlgState(true);
  163. end
  164.  
  165. function UISystemTips:ChangeDlgState(bOpen)
  166. if bOpen then
  167. self.imgBg:setVisible(true);
  168. self.layer:setTouchEnabled(true);
  169. else
  170. self.imgBg:setVisible(false);
  171. self.layer:setTouchEnabled(false);
  172. end
  173. end
  174.  
  175. function UISystemTips:GetTipsString( idx )
  176. -- 如果是number
  177. local strIdx;
  178. if type(idx)=="number" then
  179. strIdx = Prompt.CliPrompt[idx];
  180. if strIdx==nil then
  181. echoError("没有找到指定错误码:"..idx);
  182. return "错误码:"..idx;
  183. end
  184. elseif type(idx)=="string" then
  185. strIdx = idx;
  186. else
  187. echoError("错误的解析码类型。");
  188. end
  189.  
  190. local tabTips = Prompt.CliPrompt[strIdx];
  191. if not tabTips then
  192. echoError("没有找到指定提示文本:"..strIdx);
  193. return nil;
  194. end
  195.  
  196. return tabTips[LANGUAGE];
  197. end
  198.  
  199. 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. FastAdmin 的 CRUD 不支持层级模型

    FastAdmin  的 CRUD 可以快速生成控制器,模型和前端文件. 群里有人试了这个命令: php think crud -t departmant -c auth/departmant -m ...

  2. Python开发之日志记录模块:logging

    1 引言 最近在开发一个应用软件,为方便调试和后期维护,在代码中添加了日志,用的是Python内置的logging模块,看了许多博主的博文,颇有所得.不得不说,有许多博主大牛总结得确实很好.似乎我再写 ...

  3. 9,EasyNetQ-版本化消息

    要启用对版本化消息的支持,您需要确保配置所需的组件. 最简单的方法是: var bus = RabbitHutch.CreateBus( "host=localhost", ser ...

  4. bzoj2830: [Shoi2012]随机树

    题目链接 bzoj2830: [Shoi2012]随机树 题解 q1好做 设f[n]为扩展n次后的平均深度 那么\(f[n] = \frac{f[n - 1] * (n - 1) + f[n - 1] ...

  5. BZOJ.2199.[USACO2011 Jan]奶牛议会(2-SAT)

    题目链接 建边不说了.对于议案'?'的输出用拓扑不好判断,直接对每个议案的结果DFS,看是否会出现矛盾 Tarjan也用不到 //964kb 76ms #include <cstdio> ...

  6. 用面向对象计算BMI指数

    from __future__ import division class Student: def __init__(self,name,weight,height): self.name=name ...

  7. 毫秒转时间(java.js)

    SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); GregorianCalendar gc ...

  8. Java容器:HashTable, synchronizedMap与ConcurrentHashMap

    首先需要明确的是,不管使用那种Map,都不能保证公共混合调用的线程安全,只能保证单条操作的线程安全,在这一点上各Map不存在优劣. 前文中简单说过HashTable和synchronizedMap,其 ...

  9. 关闭Ubuntu桌面版GUI

    个人用于实验的Ubuntu虚拟机不需要GUI,且要复制多个,但是又懒得重新装个Ubuntu,打算把现有的带桌面的直接装好克隆起来用,但是多个GUI一起开电脑吃不消,思前想后找了下关闭GUI的方法如下: ...

  10. 如何实现一个Java Class 解析器

    原文出处: tinylcy 最近在写一个私人项目,名字叫做ClassAnalyzer,ClassAnalyzer的目的是能让我们对Java Class文件的设计与结构能够有一个深入的理解.主体框架与基 ...