[置顶] 【玩转cocos2d-x之三十】点九图和输入框的使用
原创作品,转载请标明: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为扩展类,所以在使用前需加入如下声明。
#include "cocos-ext.h"
USING_NS_CC_EXT;
CCScale9Sprite和CCSprite一样继承于CCNodeRGB,所以基本上可以像使用CCSprite一样使用CCScale9Sprite(有一点小差别CCSprite还继承了CCTextureProtocol接口)。以下用于创建一个二态点九图按钮。
CCScale9Sprite* confirmnormal=CCScale9Sprite::create("btn_style_alert_dialog_button_normal.9.png");//normal态
confirmnormal->setContentSize(CCSizeMake(100,70));//设置大小
CCScale9Sprite* confirmpressd=CCScale9Sprite::create("btn_style_alert_dialog_button_pressed.9.png");//pressd态
confirmpressd->setContentSize(CCSizeMake(100,70));//设置大小
CCMenuItemSprite* menuitem=CCMenuItemSprite::create(confirmnormal,confirmpressd,this,menu_selector(TestLayer::btncallback));
CCMenu* menu=CCMenu::create(menuitem,NULL);//创建menu
menu->setPosition(visibleSize.width/2,visibleSize.height/2);
this->addChild(menu);
2.输入框CCEditBox
2.1.概述
CCEditBox也是cocos2d-x的扩展类,所以和上面一样要进行头文件包含和命名空间声明。另外由于要监控输入框的各种状态,所以还必须实现CCEditBoxDelegate类,该类声明了以下接口:
//当键盘弹出编辑框获得焦点时调用
virtual void editBoxEditingDidBegin(CCEditBox* editBox) {};
//当键盘消失编辑框失去焦点时调用
virtual void editBoxEditingDidEnd(CCEditBox* editBox) {};
//当编辑框文本改变时调用
virtual void editBoxTextChanged(CCEditBox* editBox, const std::string& text) {};
//当返回键按下时或者点击了键盘以外的区域时调用
virtual void editBoxReturn(CCEditBox* editBox) = 0;
2.2.使用
在TestLayer.cpp的init()中创建编辑框。
//bool TestLayer::init()
CCSize visibleSize=CCDirector::sharedDirector()->getVisibleSize(); pEditBox = CCEditBox::create(CCSizeMake(250,50), CCScale9Sprite::create("login_edit_normal.9.png"));
pEditBox->setPosition(ccp(visibleSize.width/2, visibleSize.height*3/4));
pEditBox->setFontColor(ccRED);//设置字体颜色
pEditBox->setPlaceHolder("please input:");//设置预置文本
pEditBox->setMaxLength(8);//设置最大长度 // kEditBoxInputModeAny: 开启任何文本的输入键盘,包括换行
// kEditBoxInputModeEmailAddr: 开启 邮件地址 输入类型键盘
// kEditBoxInputModeNumeric: 开启 数字符号 输入类型键盘
// kEditBoxInputModePhoneNumber: 开启 电话号码 输入类型键盘
// kEditBoxInputModeUrl: 开启 URL 输入类型键盘
// kEditBoxInputModeDecimal: 开启 数字 输入类型键盘,允许小数点
// kEditBoxInputModeSingleLine: 开启任何文本的输入键盘,不包括换行
pEditBox->setInputMode(kEditBoxInputModeAny);//设置输入类型 //kEditBoxInputFlagPassword: 密码形式输入
//kEditBoxInputFlagSensitive: 敏感数据输入、存储输入方案且预测自动完成
//kEditBoxInputFlagInitialCapsWord: 每个单词首字母大写,并且伴有提示
//kEditBoxInputFlagInitialCapsSentence: 第一句首字母大写,并且伴有提示
//kEditBoxInputFlagInitialCapsAllCharacters:所有字符自动大写
pEditBox->setInputFlag(kEditBoxInputFlagPassword);//设置输入标志位 // kKeyboardReturnTypeDefault: 默认使用键盘return 类型
// kKeyboardReturnTypeDone: 默认使用键盘return类型为“Done”字样
// kKeyboardReturnTypeSend: 默认使用键盘return类型为“Send”字样
// kKeyboardReturnTypeSearch: 默认使用键盘return类型为“Search”字样
// kKeyboardReturnTypeGo: 默认使用键盘return类型为“Go”字样
pEditBox->setReturnType(kKeyboardReturnTypeDone);//设置返回类型
pEditBox->setDelegate(this);//当前类继承CCEditBoxDelegate类
addChild(pEditBox);
当前类继承于CCEditBoxDelegate,实现其所有接口如下:
void TestLayer::editBoxEditingDidBegin(CCEditBox *editBox)
{
CCLOG("start edit");
}
void TestLayer::editBoxEditingDidEnd(CCEditBox *editBox)
{
CCLOG("end edit");
}
void TestLayer::editBoxReturn(CCEditBox *editBox)
{
CCLOG("editbox return");
}
void TestLayer::editBoxTextChanged(CCEditBox *editBox, const std::string &text)
{
CCLOG("text changed");
}
3.结合点九图按钮的使用,效果图如下:
4.源码下载
下载地址:http://download.csdn.net/detail/jackyvincefu/6707427
[置顶] 【玩转cocos2d-x之三十】点九图和输入框的使用的更多相关文章
- [置顶] STM32移植contiki进阶之三(中):timer 中文版
鉴于自己英语水平不高,在这里,将上一篇关于contiki 的timer的文章翻译为中文,让自己在学习的时候,更方便点.文中有许多不是很通顺的地方,将就吧. Timers Contiki系统提供了一套时 ...
- [置顶] 玩转Eclipse — 自动注释插件JAutodoc
代码注释是一种良好的编程习惯.不管对于他人还是自己,注释都有助于代码的阅读和理解.手动添加注释,是一个非常费时和繁琐的工作,严重影响软件开发效率,这也是绝大多数程序员不愿添加注释的主要原因.JAuto ...
- [置顶] css3 befor after 简单使用 制作时尚焦点图相框
:befor.:after是CSS的伪元素,什么是伪元素呢?伪元素用于向某些选择器设置特殊效果. 我们用CSS手册可以查询到其基本的用法: E:before/E::before 设置在对象前(依据对象 ...
- Ionic-wechat项目边开发边学(四):可伸缩输入框,下拉刷新, 置顶删除
摘要 上一篇文章主要介绍了ion-list的使用, ion-popup的使用, 通过sass自定义样式, localStorage的使用, 自定义指令和服务. 这篇文章实现的功能有消息的置顶与删除, ...
- Android的SwipeToDismiss第三方开源框架模拟QQ对话列表侧滑删除,置顶,将头像图片圆形化处理。
<Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(github ...
- [置顶] IIS应用程序池多工作进程设置及Session共享
[置顶] IIS应用程序池多工作进程设置及Session共享 在调优iis的时候,朋友分享给我一个特别棒的设置方法步骤,感谢好朋友的分享. IIS应用程序池多工作进程设置及Session共享 1 ...
- [置顶] Silverlight之控件应用总结(一)(3)
[置顶] Silverlight之控件应用总结(一)(3) 分类: 技术2012-04-02 20:35 2442人阅读 评论(1) 收藏 举报 silverlightradiobuttondatat ...
- 在UWP中页面滑动导航栏置顶
最近在研究掌上英雄联盟,主要是用来给自己看新闻,顺便copy个界面改一下段位装装逼,可是在我copy的时候发现这个东西 当你滑动到一定距离的时候导航栏会置顶不动,这个特性在微博和淘宝都有,我看了@ms ...
- WinFrom窗体始终置顶
调用WindowsAPI使窗体始终保持置顶效果,不被其他窗体遮盖: [DllImport("user32.dll", CharSet = CharSet.Auto)] privat ...
随机推荐
- 用composer安装 Laravel | Laravel需要的环境配置
一:安装 参考网站 http://v4.golaravel.com/docs/4.2/installation 1.先确保安装好了PHP,和服务器环境 2.然后下载composer可执行文件到当前目录 ...
- 条码知识之十:EAN-128条码(下)
国际物品编码协会(EAN)和美国统一代码委员会(UCC)将CODE-128码引入EAN/UCC系统,并作如下规定:起始符由一个START A/B/C 加一个辅助字符FNC1构成,以区别普通的CODE- ...
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
游戏制作已经开始采用C++了,却鲜有人选择使用MFC.但笔者觉得的 ASSERT(),VERIFY()和 TRACE()这几个宏很好用.所以就想自己写一个版本来适应Windows平台下不同的工程类型. ...
- 编译:一个 C 程序的艺术之旅(转载)
C 程序为什么要编译才能执行?一个 C 程序在变成可执行文件的过程中,为什么要经过预处理.编译.汇编.链接这四道工序?让我们从这段简单的 C 程序开始. 为什么要编译 这并不是一个简单的问题.我们知道 ...
- [上海] 携程 门票事业部 招聘.NET 架构师 2 名 - V2EX
[上海] 携程 门票事业部 招聘.NET 架构师 2 名 - V2EX [上海] 携程 门票事业部 招聘.NET 架构师 2 名
- Android的AsyncTask类的解读
国庆节放假.搞了半个月都没有上班了,coding的时候一点都不在状态,本来这篇文章是在国庆节前写完的,可是由于自己的懒 惰,导致延期到国庆节,哎,这种习惯真心不好呀...不多说了以下来进入正题 之前我 ...
- C++中,如何定义和使用指向成员函数的指针
/*** 定义指向成员函数的指针变量的形式 : 成员函数返回类型 (类名∷*指针变量名)(参数列表)* 成员函数指针变量值的形式 : &类名∷成员函数名;* 成员函数指针变量使用形式 : (对 ...
- BZOJ 1036: [ZJOI2008]树的统计Count( 树链剖分 )
树链剖分... 不知道为什么跑这么慢 = = 调了一节课啊跪.. ------------------------------------------------------------------- ...
- Hibernate MySQL 数据库 使用别名 报 Column * Not Found
使用Hibernate 查询MySQL数据表的时候报 Column Not Found ,原因是MySQL的驱动不支持别名, 解决方案如下,在连接参数中加上 useOldAliasMetadataBe ...
- js中innerHTML与innerText的用法与区别
用法: <div id="test"> <span style="color:red">test1</span> te ...