cocos2dx一tab选项卡的实现

cocos2d-x 游戏菜单选项卡实现 cocos2d-x 游戏菜单选项卡实现cocos2d-x v2.2.0 立即下载

用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;
}


打完了看看效果吧



源码下载



cocos2dx简单实现TabBarView功能 使用个Menu,然后选用MenuItemSprite来填充,(MenuItemSprite有个selected(),unselected()函数,可以方便地切换状态) 然后上面是个LayerMultiplex,就是个存放Layer 的Vector,可以很方便地切换显示哪个Layer。 立即下载

相关推荐

cocos-creator点击按钮切换界面,动态加载页面,按钮缩放

cocos-creator点击按钮切换界面,动态加载页面,按钮缩放

cocos creator tab标签按钮组件 tabButtonGroup

cocos creator tab标签按钮组件 tabButtonGroup 有些UI界面有切换tab标签的需求,为了减少重复工作,提取了tabButtomGroup组件,主要功能是挂载组件时自动创建tabButton节点,并注册点击事件设置label 内容样式等,记录下。 git地址 https://github.com/h87545645/tabButtonGroup. 关键代码 在编辑器模式下创建layout,运行时挂上button protected onLoad() { if (CC_ED

h87545645的博客 1639

【玩转cocos2d-x之十四】菜单选项卡实现

原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12940733 有时候,我们希望实现选项卡功能,就是切换tab选项,场景中的内容会跟着改变,但是tab选项卡不动。这是用切换场景的方式没办法做到的。 这里我们就可以使用CCLayerMultiplex实现这个功能。 1.创建布景 这...

473687880 284

cocos creator制作游戏前端tab栏及对应功能实现

tab功能制作

章鱼仔的博客 4630

Cocos2dx标签页(TabControl/TabView)的简单实现

//TODO

yuanhong2910的专栏 6724

Cocos2d-x学习之实现类似android的菜单栏tabbar效果

直接上代码吧,参考了网上找的例子,自己做了小小的改动 主要实现代码: CCMenuItemImage *pMainHome = CCMenuItemImage::create("main_1.png","main_1_sel.png", this,menu_selector(HelloWorld::menuCloseCallback)); CC_BREAK_IF(! pMainHom

Nat_myron 2742

cocos2dxCCLayerMultiplex实现Tab选项卡

原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12940733 有时候,我们希望实现选项卡功能,就是切换tab选项,场景中的内容会跟着改变,但是tab选项卡不动。这是用切换场景的方式没办法做到的。 这里我们就可以使用CCLayerMultiplex实现这个功能。 1.创建布景

杨名天吓 4302

Cocos2dx 学习笔记29 CCLayerMultiplex管理多个层

CCLayerMultiplex

huahua12300的专栏 875

cocos入门1:添加菜单

最近开始接触cocos2d-x,大概看了下资料,了解了cocos的基本内容,yin

噌胥苑——行思驿站 1763

cocos2dx实现分页效果

游戏中实现分页还是很有必要的,无论是背包/商店还是其他些有列表显示的模块,因为实现分页会给手机减轻不少压力。在这里我先说明,我实现的分页是数据已经全部加载完成了的,而其分页的作用也就是减轻GPU的压力。(当然,要想将数据也和显示对应的话,也是不难实现的,得看情况和项目需求)        我的思路是这样的,既然已经加载了所有分页的数据,那么按显示进行分开的话,所以在每页的初始元素

占占的博客 2684

cocosCreator Tab内容布局组件(支持编辑器环节使用)

【代码】cocosCreator Tab内容布局组件(支持编辑器环节使用)

weixin_42253927的博客 334

COCOS导航组件

@COCOS 导航组件 关于想在COCOS里面实现导航功能,可用于敌人追踪主角或者是坐标点自动导航; 话不多说,直接上脚本代码,脚本文件名为lock cc.Class({ extends: cc.Component, properties: { speed:{type:cc.Integer,default:200,tooltip:"运动速度"}, }, ...

weixin_43890220的博客 403

利用图层制作选项卡

目的: 利用LayerMultiplex制作选项卡。 效果如下: LayerMultiplexMultipleLayer是种图层类,继承自Layer,它支持多路复用孩子节点。 特点: 它支持个或多个孩子节点 同时只有个孩子节点会被激活 作用: 用于管理Layer的切换,而不用切换场景 部分代码如下:bool TabContr

一只程序猿 602

cocos creator】点击按钮切换界面,动态加载界面

【代码】【cocos creator】点击按钮切换界面,动态加载界面。

烧仙草奶茶的博客 2415

cocos独立窗口恢复到tab条上

动画编辑器原来是tab。点击右上角的方框重叠按钮,变成独立动画编辑器窗口 独立的动画编辑器窗口要复原成tab页。按住1“动画编辑器字样”,拖拽到2TAB条上,复原了。 复原了。

wulong710的专栏 805

TableView (cocos-2dx lua)

TableView是Cocos-2dx实现滑动功能的控件。比如好友列表,可以上下滑动。TableView中的元素叫cell(被滑动的那些对象),每个cell有唯的idx。创建TableView,参数代表TableView大小,返回TableView对象设置滑动方向, HORIZONTAL:横向滑动 VERTICAL:纵向滑动设置位置设置事件。...

weixin_43735634的博客 1315
上一篇: cocos2dx一仿微信飞机大战游戏实战二
下一篇: cocos2dx一编辑框的使用CCEditBox
Flyjun-android
博客等级 码龄14年 73粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值