cocos2dx一tab选项卡的实现

用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 object
	pCloseItem1->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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值