Cocos2dx ver2 から追加された CCEditText を試してみました。CCEditText クラスは文字をキーボードから入力可能にするクラスです。ゲームで名前の入力などに使用できそうです。また、キーボードが表示されることにより入力フォームが隠れてしまう場合も自動的に画面をスクロールさせてくれます。

CCEditText を表示

CCEditText を表示



入力エリアの画像は 9-patch 画像を指定します。contentSize によって画像が自動的にストレッチされます。また、テキストのフォントサイズも contentSize によって自動的に決まります。プレースホルダの指定やリターンキーのタイプの指定も可能です。

テキスト入力エリアのコードは下記のようになります。

CCEditBox* editBox;
CCSize editBoxSize = CCSizeMake(200, 50);
editBox = CCEditBox::create(editBoxSize, CCScale9Sprite::create("sprite9.png"));
editBox->setPosition(ccp(size.width/2, size.height/4));
editBox->setFontColor(ccBLUE);
editBox->setPlaceHolder("Name:");
editBox->setMaxLength(8);
editBox->setReturnType(kKeyboardReturnTypeDone);
editBox->setDelegate(this);
this->addChild(editBox);

CCEditBoxDelegate クラスを継承しておけば、キーボードからの入力に応じてデリゲートメソッドを呼び出すことも可能です。

#include "CCEditBox.h"
USING_NS_CC_EXT

class HelloWorld : public cocos2d::CCLayer,
    public CCEditBoxDelegate
{
private:
    void editBoxEditingDidBegin(CCEditBox* editBox);
    void editBoxEditingDidEnd(CCEditBox* editBox);
    void editBoxTextChanged(CCEditBox* editBox, const std::string& text);
    void editBoxReturn(CCEditBox* editBox);
};

関連する投稿