Cocos 2 d-x 3.4のテキスト入力のEditBox


出典を明記してください.http://blog.csdn.net/lttree********************************************
前回、テキスト入力のCCTextFieldTTFについてお話ししましたが、
今度はテキスト入力を続けて、EditBox
CCTextFieldTTFが終わったら、すぐにこのEditBoxをやりました.
しかし、変更が多くて、しかも多くのBUG、ネット上の资料も多くなくて、全体の私は头がぼうっとしています...
まず基礎的なもの、具体的な他の機能を出して、それが少し改善されるのを待っていましょう.
一、紹介
CCTextFieldTTFと同様に、EditBoxのクラス継承図を見てみましょう.
ここで言うと、ネットで調べたのは以下のようなものばかりで、cococos 2 d-x 3.0 APIまで(中国語最高バージョンのはず)、そうです
Cocos2d-x 3.4 之 文本输入之 EditBox_第1张图片
つまりEditBoxクラスはControlButtonクラスとIMEDelegateクラスによって継承され、
CCTextFieldTTFについて議論したとき、それは動的Labelのように、
これが、ダイナミックなButtonです.
————But
3.4 apiでは、クラス継承図が変更されました.
Cocos2d-x 3.4 之 文本输入之 EditBox_第2张图片
IMEDelegateは変わっていません.これは入力法のエージェントクラスですが、もう一つはWidgetクラスになりました.このクラスは調べてみるとわかります.
Cocos2d-x 3.4 之 文本输入之 EditBox_第3张图片
ここに列挙して、具体的には、自分で考えてみましょう.
私は、2からだと思います.xから3.xの変化、
このクラスの構造を再整理しなければならないので、これをテストするときはつらいですね.の
二、操作使用
BUGはありますが、基本的な機能は使えます
1.ヘッダファイルとネーミングスペース:
#include "cocos-ext.h"
USING_NS_CC_EXT;

2.作成:
>
             * create a edit box with size.
             * @return An autorelease pointer of EditBox, you don't need to release it only if you retain it again.
             */
            static EditBox* create(const Size& size,
                                   Scale9Sprite* normalSprite,
                                   Scale9Sprite* pressedSprite = nullptr,
                                   Scale9Sprite* disabledSprite = nullptr);


各パラメータ:
——sizeテキストボックスのサイズ
——normalSpriteテキストボックスの通常の背景
——pressedSpriteテキストボックスがクリックされたときの背景
——disabledSpriteテキストボックスが使用できない場合の背景
>
             * create a edit box with size.
             * @return An autorelease pointer of EditBox, you don't need to release it only if you retain it again.
             */
            static EditBox* create(const Size& size,
                                   const std::string& pNormal9SpriteBg,
                                   TextureResType texType = TextureResType::LOCAL);

各パラメータ:
——sizeテキストボックスのサイズ
——pNormal 9 SpriteBg背景画像位置
——texTypeは知らなかったし、調べなかったし…皆さんが答えてくれることを願っています.
3.デフォルトテキスト
デフォルトテキストを設定します.CCTextFieldTTFとは異なり、create時にデフォルトテキストを作成する必要があります.これは追加で自分でsetを書く必要がある場合です.
/*                */
//     
setPlaceHolder("Name:");
//   
setPlaceholderFontName("Arial");
//   
setPlaceholderFontColor(Color3B::BLUE);
//   
setPlaceholderFontSize(48);

ちなみにテキストも
setFontName("Marker Felt");
setFontColor(Color3B::RED);
setFontSize(24);

4.その他の操作
>最大入力制限
setMaxLength(n);

これは過去にテストされていませんが、公式APIでは次のように言っています.
Cocos2d-x 3.4 之 文本输入之 EditBox_第4张图片
すなわち、テキストボックスの最大テキスト長を設定することができ、これを設定すると複数行入力がオンになるのと同じであり、
しかし、ここでは長さを制限することはできません.また、複数行の入力も開かれていません..
>表示するかどうか
setVisible(true/false);

>入力テキストの表示モードの設定
Cocos2d-x 3.4 之 文本输入之 EditBox_第5张图片
>入力可能テキストタイプの設定
Cocos2d-x 3.4 之 文本输入之 EditBox_第6张图片
>戻るタイプの設定
Cocos2d-x 3.4 之 文本输入之 EditBox_第7张图片
DEFAULT-デフォルトタイプ
DONE——「OK」
SEND——「送信」
SEARCH——「検索」
GO——「接続」
5.その依頼クラスについて
クラスを作成する場合は、CREATE_を使用します.FUNC
委任クラスのいくつかの虚関数を設定する必要があります.
-四大金剛-
//     
virtual void editBoxEditingDidBegin(EditBox* editBox);
//     
virtual void editBoxEditingDidEnd(EditBox* editBox);
//        
virtual void editBoxTextChanged(EditBox* editBox, const std::string& text);
//     
virtual void editBoxReturn(EditBox* editBox);

他にもいくつかあるので、APIを調べてみましょう~
三、Doit
それとも慣例で、実践の一環で、editboxを作成して、そのデフォルトのフォントとテキストの色などを設定します
        //     
	Size visibleSize = Director::getInstance()->getVisibleSize();  

	//      
	Size boxSize = CCSizeMake(400,200);
	Size boxSize2 = CCSizeMake(400,100);

	EditBox* editBox = EditBox::create(boxSize,"green.png");
	editBox->setPosition(Vec2(visibleSize.width/2,visibleSize.height/2));
	
	//       
	editBox->setPlaceHolder("Name:");
	editBox->setPlaceholderFontName("Arial");
	editBox->setPlaceholderFontColor(Color3B::BLUE);
	editBox->setPlaceholderFontSize(32);
	
	//        
	editBox->setFontName("Arial");
	editBox->setFontColor(Color3B::RED);
	editBox->setFontSize(24);

	this->addChild(editBox);


	EditBox* editBox2 = EditBox::create(boxSize2,"yellow.jpg");
	editBox2->setPosition(Vec2(visibleSize.width/2,visibleSize.height/4));
	

	editBox2->setPlaceHolder("Password:");
	editBox2->setFontName("Arial");
	editBox2->setPlaceholderFontSize(24);
	editBox2->setFontSize(48);
	editBox2->setInputFlag(EditBox::InputFlag::PASSWORD);

	this->addChild(editBox2);

画像を実行:
Cocos2d-x 3.4 之 文本输入之 EditBox_第8张图片 Cocos2d-x 3.4 之 文本输入之 EditBox_第9张图片
デフォルトのフォントサイズ設定機能が機能していないことがわかります.の
とても苦痛で、この各种の気がふさいで、资料は少なくて、面倒は多いです...
もしこの文章に何か間違いがあったら,ご指摘ください
出典を明記してください.http://blog.csdn.net/lttree********************************************