cocos2d-x 创建文字按钮的实现是怎样做到的,空口白话也没人看。我们直接看,通过下面的一段程序就可以实现cocos2d-x 创建文字按钮了。
- #include "HelloWorldScene.h"
- #include "SimpleAudioEngine.h"
- using namespace cocos2d;
- using namespace CocosDenshion;
- CCScene* HelloWorld::scene()
- {
- // 'scene' is an autorelease object
- CCScene *scene = CCScene::create();
- // 'layer' is an autorelease object
- HelloWorld *layer = HelloWorld::create();
- // add layer as a child to scene
- scene->addChild(layer);
- // return the scene
- return scene;
- }
- // on "init" you need to initialize your instance
- bool HelloWorld::init()
- {
- //////////////////////////////
- // 1. super init first
- if ( !CCLayer::init() )
- {
- return false;
- }
- /////////////////////////////
- // 2. add a menu item with "X" image, which is clicked to quit the program
- // you may modify it.
- // add a "close" icon to exit the progress. it's an autorelease object
- CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
- "CloseNormal.png",
- "CloseSelected.png",
- this,
- menu_selector(HelloWorld::menuCloseCallback) );
- pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
- // create menu, it's an autorelease object
- CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
- pMenu->setPosition( CCPointZero );
- this->addChild(pMenu, 1);
- /////////////////////////////
- // 3. add your codes below...
- // add a label shows "Hello World"
- // create and initialize a label
- CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Thonburi", 34);
- // ask director the window size
- CCSize size = CCDirector::sharedDirector()->getWinSize();
- // position the label on the center of the screen
- pLabel->setPosition( ccp(size.width / 2, size.height - 20) );
- // add the label as a child to this layer
- this->addChild(pLabel, 1);
- // add "HelloWorld" splash screen"
- CCSprite* pSprite = CCSprite::create("HelloWorld.png");
- // position the sprite on the center of the screen
- pSprite->setPosition( ccp(size.width/2, size.height/2) );
- // add the sprite as a child to this layer
- this->addChild(pSprite, 0);
- CCMenuItemFont::setFontSize(32); //设置字号
- CCMenuItemFont::setFontName("Marker Felt"); //设置字体
- CCMenuItemFont *font1=CCMenuItemFont::create("hah", this, menu_selector(HelloWorld::menuCloseCallback1));//添加文字按钮,点击实现缩放
- font1->setColor(ccc3(255, 0, 0)); //设置颜色
- CCMenuItemToggle * font2=CCMenuItemToggle::createWithTarget(this,menu_selector(HelloWorld::menuCloseCallback2),CCMenuItemFont::create("on"),CCMenuItemFont::create("off"),NULL); //添加选择按钮,点击实现on与off之间切换
- font2->setColor(ccc3(0, 255, 0));
- font2->setSelectedIndex(1); //设置默认显示,从零算起(此为off)
- CCMenu *newmenu=CCMenu::create(font1,font2,NULL); // 此步很关键,否则只是菜单项,但不能点击
- newmenu->setPosition(ccp(size.width/2, size.height/2));
- newmenu->alignItemsVertically(); //设置为竖排排列
- this->addChild(newmenu,2);
- num=1;
- return true;
- }
- void HelloWorld::menuCloseCallback1(CCObject *pSender)
- {
- CCMenuItemFont *font=(CCMenuItemFont*)pSender;
- num++; //hello类的私有成员
- num%=2;
- if(num==1)
- {
- font->setScale(2); //设置缩放
- }
- else
- {
- //font->setFontSize(18);
- font->setScale(0.5);
- }
- }
- void HelloWorld::menuCloseCallback2(CCObject *pSender)
- {
- }
- void HelloWorld::menuCloseCallback(CCObject* pSender)
- {
- CCDirector::sharedDirector()->end();
- #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
- exit(0);
- #endif
- }
运行效果: