日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/4/11 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【玩转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");//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類,該類聲明了以下接口:

    [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
  • //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,實現其所有接口如下:

    [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之三十】点九图和输入框的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。