cocos2dx cceditbox使用注意事项
来源:互联网 发布:上海 软件著作权 查询 编辑:程序博客网 时间:2024/05/01 22:18
基本用法见testcpp .cocos2d-x版本为2.1.4
.h文件
注意:这里继承于CCEditBoxDelegate代理,不直接继承于CCEditBox,而是将CCEditBox作为组合使用。
并将本身的Layer作为被代理对象,重载CCEditBoxDelegate接口。
CCEditBox的默认字体色是白色,若是用白色的底框则看不到输入内容,所有务必检查字体颜色
CCeditBox在安卓下的坐标与cocos2dx其他控件一致,锚点也生效,win下的效果与安卓上效果一致。
class EditBoxTest : public cocos2d::CCLayer, public cocos2d::extension::CCEditBoxDelegate
{
public:
EditBoxTest();
virtual ~EditBoxTest();
void toExtensionsMainLayer(cocos2d::CCObject *sender);
virtual void editBoxEditingDidBegin(cocos2d::extension::CCEditBox* editBox);
virtual void editBoxEditingDidEnd(cocos2d::extension::CCEditBox* editBox);
virtual void editBoxTextChanged(cocos2d::extension::CCEditBox* editBox, const std::string& text);
virtual void editBoxReturn(cocos2d::extension::CCEditBox* editBox);
private:
cocos2d::CCLabelTTF* m_pTTFShowEditReturn;
cocos2d::extension::CCEditBox* m_pEditName;
cocos2d::extension::CCEditBox* m_pEditPassword;
cocos2d::extension::CCEditBox* m_pEditEmail;
};
.cpp文件
USING_NS_CC;
USING_NS_CC_EXT;
EditBoxTest::EditBoxTest()
{
CCPoint visibleOrigin = CCEGLView::sharedOpenGLView()->getVisibleOrigin();
CCSize visibleSize = CCEGLView::sharedOpenGLView()->getVisibleSize();
CCSprite* pBg = CCSprite::create("Images/HelloWorld.png");
pBg->setPosition(ccp(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/2));
addChild(pBg);
m_pTTFShowEditReturn = CCLabelTTF::create("No edit control return!", "", 30);
m_pTTFShowEditReturn->setPosition(ccp(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y + visibleSize.height - 50));
addChild(m_pTTFShowEditReturn);
// Back Menu
CCMenuItemFont *itemBack = CCMenuItemFont::create("Back", this, menu_selector(EditBoxTest::toExtensionsMainLayer));
itemBack->setPosition(ccp(visibleOrigin.x+visibleSize.width - 50, visibleOrigin.y+25));
CCMenu *menuBack = CCMenu::create(itemBack, NULL);
menuBack->setPosition(CCPointZero);
addChild(menuBack);
CCSize editBoxSize = CCSizeMake(visibleSize.width - 100, 60);
// top 创建一个CCEditBox控件。这个控件在win下和安卓下并没有位置对齐的问题了。它的输入框与输入背景是一致的
m_pEditName = CCEditBox::create(editBoxSize, CCScale9Sprite::create("extensions/green_edit.png"));
m_pEditName->setPosition(ccp(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height*3/4));
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
m_pEditName->setFontName("Paint Boy");
#else
m_pEditName->setFontName("fonts/Paint Boy.ttf");
#endif
m_pEditName->setFontSize(25); // 设置输入后字体的大小
m_pEditName->setFontColor(ccRED); // 注意这里有坑,CCEditBox的默认字体色是白色,若是用白色的底框则看不到输入内容
m_pEditName->setPlaceHolder("Name:"); // 设置占位符的字样
m_pEditName->setPlaceholderFontColor(ccWHITE); // 设置占位符的颜色
m_pEditName->setMaxLength(8); // 设置最大可输入长度
m_pEditName->setReturnType(kKeyboardReturnTypeDone);
m_pEditName->setDelegate(this);
addChild(m_pEditName);
// middle
m_pEditPassword = CCEditBox::create(editBoxSize, CCScale9Sprite::create("extensions/orange_edit.png"));
m_pEditPassword->setPosition(ccp(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/2));
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
m_pEditPassword->setFont("American Typewriter", 30);
#else
m_pEditPassword->setFont("fonts/American Typewriter.ttf", 30);
#endif
m_pEditPassword->setFontColor(ccGREEN);
m_pEditPassword->setPlaceHolder("Password:");
m_pEditPassword->setMaxLength(6);
m_pEditPassword->setInputFlag(kEditBoxInputFlagPassword);
m_pEditPassword->setInputMode(kEditBoxInputModeSingleLine);
m_pEditPassword->setDelegate(this);
addChild(m_pEditPassword);
// bottom
m_pEditEmail = CCEditBox::create(CCSizeMake(editBoxSize.width, editBoxSize.height), CCScale9Sprite::create("extensions/yellow_edit.png"));
m_pEditEmail->setPosition(ccp(visibleOrigin.x+visibleSize.width/2, visibleOrigin.y+visibleSize.height/4));
m_pEditEmail->setAnchorPoint(ccp(0.5, 1.0f));
m_pEditEmail->setPlaceHolder("Email:");
m_pEditEmail->setInputMode(kEditBoxInputModeEmailAddr);
m_pEditEmail->setDelegate(this);
addChild(m_pEditEmail);
this->setPosition(ccp(10, 20));
}
EditBoxTest::~EditBoxTest()
{
}
void EditBoxTest::toExtensionsMainLayer(cocos2d::CCObject *sender)
{
ExtensionsTestScene *pScene = new ExtensionsTestScene();
pScene->runThisTest();
pScene->release();
}
void EditBoxTest::editBoxEditingDidBegin(cocos2d::extension::CCEditBox* editBox)
{
CCLog("editBox %p DidBegin !", editBox);
}
void EditBoxTest::editBoxEditingDidEnd(cocos2d::extension::CCEditBox* editBox)
{
CCLog("editBox %p DidEnd !", editBox);
}
void EditBoxTest::editBoxTextChanged(cocos2d::extension::CCEditBox* editBox, const std::string& text)
{
CCLog("editBox %p TextChanged, text: %s ", editBox, text.c_str());
}
void EditBoxTest::editBoxReturn(CCEditBox* editBox)
{
CCLog("editBox %p was returned !",editBox);
if (m_pEditName == editBox)
{
m_pTTFShowEditReturn->setString("Name EditBox return !");
}
else if (m_pEditPassword == editBox)
{
m_pTTFShowEditReturn->setString("Password EditBox return !");
}
else if (m_pEditEmail == editBox)
{
m_pTTFShowEditReturn->setString("Email EditBox return !");
}
}
- cocos2dx cceditbox使用注意事项
- cocos2dx CCEditBox
- cocos2dx-CCEditBox
- cocos2dx一编辑框的使用CCEditBox
- cocos2dx之CCEditBox
- Cocos2dx使用luaJavaBridge注意事项
- cocos2dX UI控件之CCEditBox
- cocos2dx项目使用svn注意事项
- CCEditBox 使用问题
- cocos2d-x CCEditBox使用
- 和屌丝一起学cocos2dx-CCEditBox
- cocos2dx-CCEditBox输入框中英文检测
- Cocos2dx-CCEditBox输入框中英文检测
- ccEditbox
- cocos2d-x CCEditBox使用陷阱
- CCEditBox使用之准备篇
- cocos2d-x CCEditBox使用陷阱
- cocos2d-x CCEditBox使用陷阱
- Java文件流 编码问题 - 读取文件时指定字符编码
- Delphi ListView基本用法大全
- 一个用于在编译阶段发现错误的技巧
- Repeater ItemDataBound
- 1分钟部署并在Eclipse上查看androidSDK源码
- cocos2dx cceditbox使用注意事项
- hdoj 4768 Flyer
- NSMutableString 的用处
- gamit 编译 setup.f 错误
- uva 10739 - String to Palindrome(带增删改操作的回文串问题)
- eclipse 优秀插件
- 实现随机抽样【随机数生成问题】
- 【eclipse】启动时fail to create Java Virtual Machine
- 公司的效益指标