生活随笔
收集整理的這篇文章主要介紹了
【玩转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為擴展類,所以在使用前需加入如下聲明。
[cpp]?view plaincopy
#include?"cocos-ext.h"?? USING_NS_CC_EXT;??
CCScale9Sprite和CCSprite一樣繼承于CCNodeRGB,所以基本上可以像使用CCSprite一樣使用CCScale9Sprite(有一點小差別CCSprite還繼承了CCTextureProtocol接口)。以下用于創建一個二態點九圖按鈕。
[cpp]?view plaincopy
CCScale9Sprite*?confirmnormal=CCScale9Sprite::create("btn_style_alert_dialog_button_normal.9.png");?? confirmnormal->setContentSize(CCSizeMake(100,70));?? CCScale9Sprite*?confirmpressd=CCScale9Sprite::create("btn_style_alert_dialog_button_pressed.9.png");?? confirmpressd->setContentSize(CCSizeMake(100,70));?? CCMenuItemSprite*?menuitem=CCMenuItemSprite::create(confirmnormal,confirmpressd,this,menu_selector(TestLayer::btncallback));?? CCMenu*?menu=CCMenu::create(menuitem,NULL);?? menu->setPosition(visibleSize.width/2,visibleSize.height/2);?? this->addChild(menu);??
2.輸入框CCEditBox
2.1.概述
CCEditBox也是cocos2d-x的擴展類,所以和上面一樣要進行頭文件包含和命名空間聲明。另外由于要監控輸入框的各種狀態,所以還必須實現CCEditBoxDelegate類,該類聲明了以下接口:
[cpp]?view plaincopy
?? 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()中創建編輯框。
[cpp]?view plaincopy
?? 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);?? ?? ?? ?? ?? ?? ?? ?? ?? pEditBox->setInputMode(kEditBoxInputModeAny);?? ?? ?? ?? ?? ?? ?? pEditBox->setInputFlag(kEditBoxInputFlagPassword);?? ?? ?? ?? ?? ?? ?? pEditBox->setReturnType(kKeyboardReturnTypeDone);?? pEditBox->setDelegate(this);?? addChild(pEditBox);??
當前類繼承于CCEditBoxDelegate,實現其所有接口如下:
[cpp]?view plaincopy
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之三十】点九图和输入框的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。