cocos2dx一tab选项卡的实现

来源:互联网 发布:umail软件怎么收费 编辑:程序博客网 时间:2024/05/30 04:30

用CCLayerMultiplex层管理的方式实现tab选项卡,更多的使用可以查看API,看代码


新建一个CCScene场景

#ifndef _TestScene_#define  _TestScene_#include "cocos2d.h"#include "cocos-ext.h"#include "Layer1.h"#include "Layer2.h"#include "Layer3.h"#include "Layer4.h"USING_NS_CC;USING_NS_CC_EXT;class  TestScene:public cocos2d::CCScene{public:TestScene();~TestScene();virtual bool init();CREATE_FUNC(TestScene);void menuCallback(CCObject* pSender);//layer图层Layer1* layer1;Layer2* layer2;Layer3* layer3;Layer4* layer4;cocos2d::CCLayerMultiplex* layer_mul;int curLayerPos;};#endif


#include "TestScene.h"TestScene::TestScene(){layer1=NULL;layer2=NULL;layer3=NULL;layer4=NULL;curLayerPos=0;}TestScene::~TestScene(){}bool TestScene::init(){if (!CCScene::init()){return false;}//初始化三个图层layer1=Layer1::create();layer2=Layer2::create();layer3=Layer3::create();/*layer4=Layer4::create();*/// layer1->setTag(11);// layer2->setTag(12);// layer3->setTag(13);// layer4->setTag(14);CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();layer_mul=CCLayerMultiplex::create(layer1,layer2,layer3,NULL);layer_mul->setPosition(ccp(0,50));this->addChild(layer_mul);CCMenuItemImage *pCloseItem1 = CCMenuItemImage::create("w_b.png","r_b.png",this,menu_selector(TestScene::menuCallback));CCMenuItemImage *pCloseItem2 = CCMenuItemImage::create("r_b.png","w_b.png",this,menu_selector(TestScene::menuCallback));CCMenuItemImage *pCloseItem3 = CCMenuItemImage::create("g_b.png","r_b.png",this,menu_selector(TestScene::menuCallback));CCMenuItemImage *pCloseItem4 = CCMenuItemImage::create("r_b.png","w_b.png",this,menu_selector(TestScene::menuCallback));// create menu, it's an autorelease objectpCloseItem1->setTag(0);pCloseItem2->setTag(1);pCloseItem3->setTag(2);/*pCloseItem4->setTag(3);*/CCMenu* pMenu = CCMenu::create(pCloseItem1, pCloseItem2, pCloseItem3,NULL);pMenu->alignItemsHorizontallyWithPadding(-1);pMenu->setPosition(visibleSize.width/2,25);this->addChild(pMenu, 1);return true;}void TestScene::menuCallback(CCObject* pSender){int item=((CCMenuItemImage*)pSender)->getTag();if (item!=curLayerPos){layer_mul->switchTo(item);curLayerPos=item;}}


选项卡要显示的三个图层

#ifndef _Layer1_#define _Layer1_#include "cocos2d.h"#include "cocos-ext.h"class Layer1:public cocos2d::CCLayer{public:Layer1();~Layer1();virtual bool init();CREATE_FUNC(Layer1);};#endif


#include "Layer1.h"USING_NS_CC;USING_NS_CC_EXT;using namespace cocos2d;Layer1::Layer1(){}Layer1::~Layer1(){}bool Layer1::init(){if (!CCLayer::init()){return false;}CCSize size=CCDirector::sharedDirector()->getVisibleSize();CCSprite* s1=CCSprite::create("HelloWorld.png");s1->setScale(0.5);s1->setPosition(ccp(size.width/2,size.height/2));this->addChild(s1);// CCNode* node=CCNode::create();// node->addChild(s1);// node->runAction(CCScaleTo::create(0.5,1.5));return true;}


#ifndef _Layer2_#define _Layer2_#include "cocos2d.h"#include "cocos-ext.h"class Layer2:public cocos2d::CCLayer{public:Layer2();~Layer2();virtual bool init();CREATE_FUNC(Layer2);};#endif


#include "Layer2.h"USING_NS_CC;USING_NS_CC_EXT;using namespace cocos2d;Layer2::Layer2(){}Layer2::~Layer2(){}bool Layer2::init(){if (!CCLayer::init()){return false;}CCSize size=CCDirector::sharedDirector()->getVisibleSize();CCSprite* s2=CCSprite::create("HelloWorld.png");s2->setScale(0.8);s2->setPosition(ccp(size.width/2,size.height/2));this->addChild(s2);return true;}


#ifndef _Layer3_#define _Layer3_#include "cocos2d.h"#include "cocos-ext.h"class Layer3:public cocos2d::CCLayer{public:Layer3();~Layer3();virtual bool init();CREATE_FUNC(Layer3);};#endif


#include "Layer3.h"USING_NS_CC;USING_NS_CC_EXT;using namespace cocos2d;Layer3::Layer3(){}Layer3::~Layer3(){}bool Layer3::init(){if (!CCLayer::init()){return false;}CCSize size=CCDirector::sharedDirector()->getVisibleSize();CCSprite* s3=CCSprite::create("HelloWorld.png");s3->setPosition(ccp(size.width/2,size.height/2));this->addChild(s3);return true;}


打完了看看效果吧



源码下载



0 0
原创粉丝点击