原创作品,转载请标明http://blog.csdn.net/jackystudio/article/details/17297721

登录界面一个帐号/密码输入框或者主角命名框是少不了的。这节就来了解一下点九图的输入框的使用。这里只是介绍基础知识,并不进行平台的移植,也不处理跨平台可能出现的问题。

1.点九图CCScale9Sprite

1.1.概述

点九图做过移动开发的肯定不会陌生。采用的是PNG点9图,PNG点9图可以自适应各种环境,同时保持伸缩不变形。移动端的UI基本上都是按这个来做的。点9图的制作很简单,用Android SDK的tool下的draw9patch.bat就可以制作。左为原理图,右为效果图。

1.2.使用

cocos2d-x采用CCScale9Sprite来处理点九图,CCScale9Sprite为扩展类,所以在使用前需加入如下声明。

[cpp] view plaincopy
  1. #include "cocos-ext.h"
  2. USING_NS_CC_EXT;

CCScale9Sprite和CCSprite一样继承于CCNodeRGB,所以基本上可以像使用CCSprite一样使用CCScale9Sprite(有一点小差别CCSprite还继承了CCTextureProtocol接口)。以下用于创建一个二态点九图按钮。

[cpp] view plaincopy
  1. CCScale9Sprite* confirmnormal=CCScale9Sprite::create("btn_style_alert_dialog_button_normal.9.png");//normal态
  2. confirmnormal->setContentSize(CCSizeMake(100,70));//设置大小
  3. CCScale9Sprite* confirmpressd=CCScale9Sprite::create("btn_style_alert_dialog_button_pressed.9.png");//pressd态
  4. confirmpressd->setContentSize(CCSizeMake(100,70));//设置大小
  5. CCMenuItemSprite* menuitem=CCMenuItemSprite::create(confirmnormal,confirmpressd,this,menu_selector(TestLayer::btncallback));
  6. CCMenu* menu=CCMenu::create(menuitem,NULL);//创建menu
  7. menu->setPosition(visibleSize.width/2,visibleSize.height/2);
  8. this->addChild(menu);

2.输入框CCEditBox

2.1.概述

CCEditBox也是cocos2d-x的扩展类,所以和上面一样要进行头文件包含和命名空间声明。另外由于要监控输入框的各种状态,所以还必须实现CCEditBoxDelegate类,该类声明了以下接口:

[cpp] view plaincopy
  1. //当键盘弹出编辑框获得焦点时调用
  2. virtual void editBoxEditingDidBegin(CCEditBox* editBox) {};
  3. //当键盘消失编辑框失去焦点时调用
  4. virtual void editBoxEditingDidEnd(CCEditBox* editBox) {};
  5. //当编辑框文本改变时调用
  6. virtual void editBoxTextChanged(CCEditBox* editBox, const std::string& text) {};
  7. //当返回键按下时或者点击了键盘以外的区域时调用
  8. virtual void editBoxReturn(CCEditBox* editBox) = 0;

2.2.使用

在TestLayer.cpp的init()中创建编辑框。

[cpp] view plaincopy
  1. //bool TestLayer::init()
  2. CCSize visibleSize=CCDirector::sharedDirector()->getVisibleSize();
  3. pEditBox = CCEditBox::create(CCSizeMake(250,50), CCScale9Sprite::create("login_edit_normal.9.png"));
  4. pEditBox->setPosition(ccp(visibleSize.width/2, visibleSize.height*3/4));
  5. pEditBox->setFontColor(ccRED);//设置字体颜色
  6. pEditBox->setPlaceHolder("please input:");//设置预置文本
  7. pEditBox->setMaxLength(8);//设置最大长度
  8. //      kEditBoxInputModeAny:         开启任何文本的输入键盘,包括换行
  9. //      kEditBoxInputModeEmailAddr:   开启 邮件地址 输入类型键盘
  10. //      kEditBoxInputModeNumeric:     开启 数字符号 输入类型键盘
  11. //      kEditBoxInputModePhoneNumber: 开启 电话号码 输入类型键盘
  12. //      kEditBoxInputModeUrl:         开启 URL 输入类型键盘
  13. //      kEditBoxInputModeDecimal:     开启 数字 输入类型键盘,允许小数点
  14. //      kEditBoxInputModeSingleLine:  开启任何文本的输入键盘,不包括换行
  15. pEditBox->setInputMode(kEditBoxInputModeAny);//设置输入类型
  16. //kEditBoxInputFlagPassword:                密码形式输入
  17. //kEditBoxInputFlagSensitive:               敏感数据输入、存储输入方案且预测自动完成
  18. //kEditBoxInputFlagInitialCapsWord:         每个单词首字母大写,并且伴有提示
  19. //kEditBoxInputFlagInitialCapsSentence:     第一句首字母大写,并且伴有提示
  20. //kEditBoxInputFlagInitialCapsAllCharacters:所有字符自动大写
  21. pEditBox->setInputFlag(kEditBoxInputFlagPassword);//设置输入标志位
  22. //      kKeyboardReturnTypeDefault:  默认使用键盘return 类型
  23. //      kKeyboardReturnTypeDone:     默认使用键盘return类型为“Done”字样
  24. //      kKeyboardReturnTypeSend:     默认使用键盘return类型为“Send”字样
  25. //      kKeyboardReturnTypeSearch:   默认使用键盘return类型为“Search”字样
  26. //      kKeyboardReturnTypeGo:       默认使用键盘return类型为“Go”字样
  27. pEditBox->setReturnType(kKeyboardReturnTypeDone);//设置返回类型
  28. pEditBox->setDelegate(this);//当前类继承CCEditBoxDelegate类
  29. addChild(pEditBox);

当前类继承于CCEditBoxDelegate,实现其所有接口如下:

[cpp] view plaincopy
  1. void TestLayer::editBoxEditingDidBegin(CCEditBox *editBox)
  2. {
  3. CCLOG("start edit");
  4. }
  5. void TestLayer::editBoxEditingDidEnd(CCEditBox *editBox)
  6. {
  7. CCLOG("end edit");
  8. }
  9. void TestLayer::editBoxReturn(CCEditBox *editBox)
  10. {
  11. CCLOG("editbox return");
  12. }
  13. void TestLayer::editBoxTextChanged(CCEditBox *editBox, const std::string &text)
  14. {
  15. CCLOG("text changed");
  16. }

3.结合点九图按钮的使用,效果图如下:

4.源码下载

下载地址:http://download.csdn.net/detail/jackyvincefu/6707427

【玩转cocos2d-x之三十】点九图和输入框的使用相关推荐

  1. SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  2. 《神探tcpdump第五招》-linux命令五分钟系列之三十九

    == [系列文章] <神探tcpdump第一招>-linux命令五分钟系列之三十五 <神探tcpdump第二招>-linux命令五分钟系列之三十六 <神探tcpdump第 ...

  3. SAP UI5 应用开发教程之三十八 - 使用 Chrome 开发者工具查看程序执行出错时的上下文信息

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  4. SAP UI5 应用开发教程之三十六 - 使用 Chrome 开发者工具 Elements 标签动态修改 CSS 类试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  5. SAP UI5 应用开发教程之三十五 - 如何把本地开发的 SAP UI5 应用部署到 ABAP 服务器上试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  6. SAP UI5 应用开发教程之三十四 - SAP UI5 应用基于设备类型的页面适配功能(Device Adaptation)试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  7. SAP UI5 应用开发教程之三十二 - 如何创建一个自定义 SAP UI5 控件试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  8. SAP UI5 应用开发教程之三十 - SAP UI5 的路由过程中进行参数传递试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  9. 华强北出租5G手机,半小时3块钱,双11“秒杀利器”,十秒九中!

    所以说,世上不是缺少商机,只是缺少发现商机的头脑. 前有女大学生出租iPhone 11,每天净赚40元,现在又有人推出"5G钟点机"业务. 大家都知道深圳有个神奇的地方叫华强北,全 ...

最新文章

  1. 呵护宝宝健康成长 飞鹤携手第四范式天枢打造精准智能推荐
  2. mysql rpm 安装多实例_MySQL多实例安装
  3. Ethercat解析(六)之功能概述
  4. 实现自定义扩展点_spring扩展API接口介绍
  5. HTML draggable 属性
  6. 【翻译】MongoDB指南/CRUD操作(二)
  7. github项目提交失败 master - master (non-fast-forward)
  8. Atitit. Object-c语言 的新的特性  attilax总结
  9. 1.CPU体系架构-RISC指令集和CISC指令集
  10. 凤凰os安装super su
  11. Common Prefixes (思维)
  12. SpringBoot整合阿里云短信服务详细过程(保证初学者也能实现)
  13. 微信开通状态检测说明书
  14. angular aot编译报错 ERROR in ./src/main.ts 解决方法
  15. 卖身风波中的考拉员工
  16. 河南专升本公共英语语法考点分析---代词、介词、连接词
  17. 数据抓包工具(http/https)Charles,wireshark,fiddler的安装使用和区别对比 链接:https://www.365jz.com/article/24504 著作权归作者
  18. MATLAB读ArcGIS输出的dbf文件
  19. mysql加入安装策略_MySQL——安装
  20. mysql查询出现In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated c

热门文章

  1. 常用的函数式接口_Consumer接口的默认方法andThen
  2. Hive的基本操作-内置函数
  3. 模板方法模式coding
  4. 配置jvm堆最大内存eden区与s0或者s1区域比例
  5. log4j 2.x 架构(源码)
  6. Redmine 数据库连接错误
  7. linux系统判断是否重启、关机、查询登录诊断分析简介
  8. Quartz.Net使用总结
  9. Gridcontrol新增行选中有关问题
  10. Android用户界面设计:框架布局