Cocos 2 d-x 3.4のテキスト入力のCCTextFieldTTF
5993 ワード
出典を明記してください.http://blog.csdn.net/lttree********************************************
本文は主にテキスト入力の東東を述べる.
これの役割は言うまでもなく、やはり重要です.
cocos 2 d-xエンジンはテキスト入力に対して2つのクラスが実現でき、
一つは、CCTextFieldTTF
もう一つはCCEditBoxです
本文は主に最初のCCTextFieldTTFについて述べ,テキスト入力<2>のときにCCEditBoxについて述べる.
一、紹介
このクラスでは、3.4 APIの継承図はソース紫です.
このクラスはLabelとIMEDelegate(サブクラスに仮想キーボード機能を提供する)から継承されていることがわかります.
入力された文字を傍受することで時々更新されるLabelという説もある.
二、関連操作
1.作成
ここでの作成はcreateではありませんが、2つの方法があります.
1つ目は、テキストボックスのサイズ、配置方法を自分で定義することです.
パラメータは次のとおりです.
placeholderテキストボックスのデフォルト内容(文字がない場合の内容)
dimensionsテキストボックスサイズ
alignmentテキストボックスの内容の配置方法
fontNameテキストボックスに使用されるフォント
fontSizeテキストボックスフォントサイズ
PS:TextHAlignmentについて
2つ目は、フォントの種類、サイズ、デフォルトの内容のみを定義し、サイズはLabelサイズに等しく、内容が編集ボックスサイズを超えると自動的に拡張されます.
パラメータは上の意味と同じで、書きません.
2.その他の操作
<1>テキストボックスのデフォルト内容、デフォルト内容のフォント色の設定
<2>編集ボックスの内容
<3>仮想キーボード
<4>パスワード
<5>文字数
他の操作については、自分でAPIを見てみましょう.
ここではこれ以上述べない
三、Doit
小さな例を示しましょう
テキスト・ボックスの作成
4つのボタンを設定し、テキストボックスを操作します.
対応する関数の設定:
Ok、ちょっと動いて(インタフェースがちょっとスラグですね..小さなテスト、これらの細部を気にしないでください..)
CCTextFieldTTFについてはここまでですが、
テスト例のすべての内容はこれらだけではありません.
一部の内容は書かれていませんが、
完全版テスト内容->こちら
出典を明記してください.http://blog.csdn.net/lttree********************************************
本文は主にテキスト入力の東東を述べる.
これの役割は言うまでもなく、やはり重要です.
cocos 2 d-xエンジンはテキスト入力に対して2つのクラスが実現でき、
一つは、CCTextFieldTTF
もう一つはCCEditBoxです
本文は主に最初のCCTextFieldTTFについて述べ,テキスト入力<2>のときにCCEditBoxについて述べる.
一、紹介
このクラスでは、3.4 APIの継承図はソース紫です.
このクラスはLabelとIMEDelegate(サブクラスに仮想キーボード機能を提供する)から継承されていることがわかります.
入力された文字を傍受することで時々更新されるLabelという説もある.
二、関連操作
1.作成
ここでの作成はcreateではありませんが、2つの方法があります.
1つ目は、テキストボックスのサイズ、配置方法を自分で定義することです.
/** creates a TextFieldTTF from a fontname, alignment, dimension and font size */
static TextFieldTTF * textFieldWithPlaceHolder(const std::string& placeholder, const Size& dimensions, TextHAlignment alignment, const std::string& fontName, float fontSize);
パラメータは次のとおりです.
placeholderテキストボックスのデフォルト内容(文字がない場合の内容)
dimensionsテキストボックスサイズ
alignmentテキストボックスの内容の配置方法
fontNameテキストボックスに使用されるフォント
fontSizeテキストボックスフォントサイズ
PS:TextHAlignmentについて
enum class CC_DLL TextHAlignment
{
LEFT,
CENTER,
RIGHT
};
2つ目は、フォントの種類、サイズ、デフォルトの内容のみを定義し、サイズはLabelサイズに等しく、内容が編集ボックスサイズを超えると自動的に拡張されます.
/** creates a TextFieldTTF from a fontname and font size */
static TextFieldTTF * textFieldWithPlaceHolder(const std::string& placeholder, const std::string& fontName, float fontSize);
パラメータは上の意味と同じで、書きません.
2.その他の操作
<1>テキストボックスのデフォルト内容、デフォルト内容のフォント色の設定
// /
virtual void setPlaceHolder(const std::string& text);
virtual const std::string& getPlaceHolder() const;
// /
virtual const Color4B& getColorSpaceHolder();
virtual void setColorSpaceHolder(const Color3B& color);
virtual void setColorSpaceHolder(const Color4B& color);
<2>編集ボックスの内容
// /
virtual void setString(const std::string& text) override;
virtual const std::string& getString() const override;
//
virtual void setTextColor(const Color4B& textColor) override;
<3>仮想キーボード
//
virtual bool attachWithIME();
//
virtual bool detachWithIME();
<4>パスワード
// , * , *, 3 *
textEdit->setSecureTextEntry(true);
<5>文字数
//
inline int getCharCount() const { return _charCount; };
他の操作については、自分でAPIを見てみましょう.
ここではこれ以上述べない
三、Doit
小さな例を示しましょう
テキスト・ボックスの作成
// 1
textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("Please input:","Arial", 36);
textEdit->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
textEdit->setColorSpaceHolder(Color3B::BLUE);
this->addChild(textEdit);
4つのボタンを設定し、テキストボックスを操作します.
// ——
auto btn_psw = MenuItemFont::create("password",CC_CALLBACK_1(TextInput::menupswCallback,this));
btn_psw->setPosition(Vec2(btn_psw->getContentSize().width,visibleSize.height/4));
// ——
auto btn_show = MenuItemFont::create("show",CC_CALLBACK_1(TextInput::menushowCallback,this));
btn_show->setPosition(Vec2(btn_psw->getContentSize().width*2,visibleSize.height/4));
// ——
auto btn_count = MenuItemFont::create("count",CC_CALLBACK_1(TextInput::menucountCallback,this));
btn_count->setPosition(Vec2(btn_psw->getContentSize().width,visibleSize.height/6));
// ——
auto btn_color = MenuItemFont::create("color",CC_CALLBACK_1(TextInput::menuchangeColorCallback,this));
btn_color->setPosition(Vec2(btn_psw->getContentSize().width*2,visibleSize.height/6));
対応する関数の設定:
//
bool TextInput::onTouchBegan(CCTouch* touch, CCEvent* ev)
{
//
bool isClicked = textEdit->boundingBox().containsPoint(touch->getLocation());
//
if( isClicked )
{
//
textEdit->attachWithIME();
}
else
{
textEdit->detachWithIME();
}
//
return true;
}
//
void TextInput::menupswCallback(cocos2d::Ref* pSender)
{
if( textEdit->isSecureTextEntry() )
{
textEdit->setSecureTextEntry(false);
}
else
{
textEdit->setSecureTextEntry(true);
}
}
//
void TextInput::menushowCallback(cocos2d::Ref* pSender)
{
auto label = (Label*) this->getChildByTag(111);
label->setString(textEdit->getString());
}
//
void TextInput::menucountCallback(cocos2d::Ref* pSender)
{
auto label = (Label*) this->getChildByTag(112);
label->setString( StringUtils::format(" %d ",textEdit->getCharCount()) );
}
//
void TextInput::menuchangeColorCallback(cocos2d::Ref* pSender)
{
textEdit->setColor(Color3B::GREEN);
}
Ok、ちょっと動いて(インタフェースがちょっとスラグですね..小さなテスト、これらの細部を気にしないでください..)
CCTextFieldTTFについてはここまでですが、
テスト例のすべての内容はこれらだけではありません.
一部の内容は書かれていませんが、
完全版テスト内容->こちら
出典を明記してください.http://blog.csdn.net/lttree********************************************