輸入框之CCTextFieldTTF

HelloWorldScene.h文件
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"

#include "SimpleAudioEngine.h"

class HelloWorld : public cocos2d::CCLayer,public cocos2d::CCTextFieldDelegate
{
public:
    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
    virtual bool init();  

    // there's no 'id' in cpp, so we recommand to return the exactly class pointer
    static cocos2d::CCScene* scene();
    
    // a selector callback
    void menuCloseCallback(CCObject* pSender);

	/*重寫CCTextFieldDelegate的回調函數*/

	/*當用戶啓動虛擬鍵盤時的回調函數*/
	virtual bool onTextFieldAttachWithTME(CCObject* pSender);

	/*當用戶關閉虛擬鍵盤時的回調函數*/
	virtual bool onTextFieldDetachWithIME(CCObject* pSender);

	/*當用戶進行輸入時的回調函數*/
	virtual bool onTextFieldInsertText(CCObject* pSender,const char* text,int nLen);

	/*當用戶刪除文字時的回調函數*/
	virtual bool onTextFieldDeleteBackward(CCObject* pSender,const char* delText,int nLen);
    // implement the "static node()" method manually
    CREATE_FUNC(HelloWorld);
};

#endif  // __HELLOWORLD_SCENE_H__

HelloWorld.cpp文件

#include "HelloWorldScene.h"

using namespace cocos2d;

CCScene* HelloWorld::scene()
{
    CCScene * scene = NULL;
    do 
    {
        // 'scene' is an autorelease object
        scene = CCScene::create();
        CC_BREAK_IF(! scene);

        // 'layer' is an autorelease object
        HelloWorld *layer = HelloWorld::create();
        CC_BREAK_IF(! layer);

        // add layer as a child to scene
        scene->addChild(layer);
    } while (0);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        //////////////////////////////////////////////////////////////////////////
        // super init first
        //////////////////////////////////////////////////////////////////////////

        CC_BREAK_IF(! CCLayer::init());


		CCSize size = CCDirector::sharedDirector()->getWinSize();
		CCTextFieldTTF* pTextField = CCTextFieldTTF::textFieldWithPlaceHolder("input...","Helvetica",24);
		pTextField->setPosition(ccp(size.width*0.5,size.height*0.7));
		this->addChild(pTextField);

		//綁定接口
		pTextField->setDelegate(this);

		//開啓輸入
		pTextField->attachWithIME();
		//關閉輸入
//		pTextField->detachWithIME();

		

		
        bRet = true;
    } while (0);

    return bRet;
}

bool HelloWorld::onTextFieldAttachWithTME(CCObject* pSender)
{
	CCLOG("啓動輸入");
	return false;
	//return true; //不啓動
}

bool HelloWorld::onTextFieldDetachWithIME(CCObject* pSender)
{
	CCLOG("關閉輸入");
	return false;
	//return true; //不關閉
}

bool HelloWorld::onTextFieldInsertText(CCObject* pSender,const char* text,int nLen)
{
	CCLOG("輸入字符...");
	return false;
	//return true; //不輸入
}

bool HelloWorld::onTextFieldDeleteBackward(CCObject* pSender,const char* delText,int nLend)
{
	CCLOG("刪除字符");
	return false;
	//return true; //不刪除
}

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    // "close" menu item clicked
    CCDirector::sharedDirector()->end();
}


這個是直接輸入文字的,我開始以爲是有個彈出框輸入文字。。。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章