剛剛看了看以前寫的博客, 我們已經學了CCLabelTTF, CCLabelBMFont, CCLAbelAtlas, CCSprite, CCMenu這些基礎控件了, 基礎控件也沒有多少了, 我們今天來學習基礎控件中的CCEditBox, 嘿嘿, 看名字大家也就知道是什麼東東了吧.
我們先來看看繼承關係:
所以, 我們創建類的時候要繼承CCIMEDelegate
用法:
CCEditBox* editbox = CCEditBox::create(創建一個矩形區域, 一個"九妹"對象);
對於"九妹", 相信做過安卓的都清楚吧, 這裏, 我解釋一下, 所謂的九妹就是指可拉伸圖片, 我們等一會兒會使用一張97*18的圖片作爲編輯框背景, 然後我們設置編輯框的寬高爲300*100, 大家等會兒看看是不是圖片還是很清晰, 這就是九妹的強大之處, 對圖片進行填充式拉昇, 避免了圖片的失真, 九妹的用法:CCScale9sprite::create( "圖片文件");
我們繼續來看CCEditBox, 由於CCScale9sprite屬於擴展功能, 所以要加上#include "cocos-ext.h", 並且使用命名空間USING_NS_CC_EXT;(我使用的是2.1.5版本的, 直接就可以使用, 貌似2.0以前的直接引用頭文件會報錯, 我們來看看解決辦法,
( 旁白: 最近有盜圖的, 進來了還說是原創, 打個標記先))
做了這麼多準備工作, 我們正式開始來創建CCEditBox,
CCScale9Sprite* jiumei = CCScale9Sprite::create( "bg.png"); //創建一個九妹對象
CCEditBox* editbox = CCEditBox::create( CCSizeMake( 300, 100), jiumei); //創建一個CCEditBox
editbox->setPosition( ccp( visibleSize.width / 2, visibleSize.height / 2));
addChild( editbox);
我們點擊一下CCEditBox, 然後輸入文字:
彈出了一個對話框, 我們就可以輸入文字了, 並且背景圖也並沒有失真, 是不是?
手機會自動彈出鍵盤.
好了, 我們今天的課程... ... 其實還沒完( 旁白: 去死!!!!)
我麼輸入文字之後, 還必須能夠得到才行啊
我們繼續來看, 查閱之後我們發現, cocos2dX爲我們提供了很多功能, 我這裏介紹兩個常用的, 有需要的朋友可以自行查閱官方API, 或者離線手冊(稍後我會上傳)
getText();
//獲取文本
setText( "字符串"); //設置文本(個人感覺沒多大用處)
setFontColor( ccc3對象); //設置文本顏色
setColor( ccc3對象);
//設置背景顏色
setPlaceHolder( "文本"); //設置預設文本
setMaxLength( 對象); //設置最大長度
setInputMode( 輸入模式); //設置鍵盤模式
setInputFlag( 文本類型); //設置文本類型
setReturnType( 鍵盤返回類型); //設置鍵盤返回類型
鍵盤模式:
kEditBoxInputModeAny //文本樣式
kEditBoxInputModeEmailAddr //郵件樣式
kEditBoxInputModeNumeric //數字樣式
kEditBoxInputModePhoneNumber //電話號碼樣式
kEditBoxInputModeUrl //網址樣式
kEditBoxInputModeDecimal //輸入樣式
kEditBoxInputModeSingleLine //文本樣式
文本類型:
kEditBoxInputFlagPassword //密碼形式
kEditBoxInputFlagSensitive //敏感數據輸入
kEditBoxInputFlagInitialCapsWord //每個單詞首字符大寫
kEditBoxInputFlagInitialCapsSentence //第一句首字符大寫
kEditBoxInputFlagInitialCapsAllCharacters //自動大寫
返回類型:
kKeyboardReturnTypeDefault //默認
kKeyboardReturnTypeDone //Done
kKeyboardReturnTypeGo //Go
kKeyboardReturnTypeSend //Send
kKeyboardReturnTypeSearch //Search
在使用getText的時候, 我們應該在用戶輸入完成之後再獲取, 所以cocos2dX也給我們提供了一些虛函數, 監聽完成之類的狀態, 我也例舉部分:
virtual void editBoxEditingDidEnd(cocos2d::extension::CCEditBox * myeditbox);
//輸入結束
virtual void editBoxReturn(cocos2d::extension::CCEditBox * myeditbox);
//點了返回之後
... ...
我們可以根據需要, 實現對應的功能
我們繼續, 加兩行代碼
editbox->setInputFlag( kEditBoxInputFlagPassword); //設置文本類型
editbox->setColor( ccc3( 255, 0, 0)); //設置yanse
editbox->setFontColor( ccc3( 0, 255, 255)); //設置文本顏色
再來看效果:
看起來還不錯吧( 旁白: 真心醜)
嗯, 還有一部分功能沒有辦法在電腦上展示, 我們明天講講移植安卓, 大家在手機上測試吧