`
473687880
  • 浏览: 487279 次
文章分类
社区版块
存档分类
最新评论

layer之间切换

 
阅读更多

看了偶尔e网事童鞋的那篇博客,我也依葫芦画瓢。

就是点击不同的按钮切换场景:

场景的代码:

#include "TestLayer.h"


bool TestLayer::init(const std::string& layerName,const std::string& imageFolder)
{
	bool bRet=false;
	do 
	{
		if(!CCLayer::init())
		{
			return false;
		}

		CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
		CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

		CCLabelTTF* pLabel = CCLabelTTF::create(layerName.c_str(), "Arial", 30);

		// position the label on the center of the screen
		pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
			origin.y + visibleSize.height - pLabel->getContentSize().height));

		// add the label as a child to this layer
		this->addChild(pLabel, 1);

		// add "HelloWorld" splash screen"
		CCSprite* pSprite = CCSprite::create(imageFolder.c_str());
		pSprite->setScale(0.3);

		// position the sprite on the center of the screen
		pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

		// add the sprite as a child to this layer
		this->addChild(pSprite, 0);
		bRet=true;
	} while (0);
	return bRet;
}

TestLayer* TestLayer::create( const std::string& layerName,const std::string& imageFolder )
{
	TestLayer* pRet = new TestLayer;
	if (pRet && pRet->init(layerName, imageFolder))
	{
		pRet->autorelease();
	}
	else
	{
		delete pRet;
		pRet = nullptr;
	}
	return pRet;
}

加载的代码:

#include "HelloWorldScene.h"
#include "TestLayer.h"

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auto 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 ( !Scene::init() )
    {
        return false;
    }

	curLayerPos = 0;
    
	TestLayer* layer1 = TestLayer::create("1","1.jpg");
	TestLayer* layer2 = TestLayer::create("2","2.jpg");
	TestLayer* layer3 = TestLayer::create("3","3.jpg");

	_layerMuticomplex = LayerMultiplex::create();
	_layerMuticomplex->addLayer(layer1);
	_layerMuticomplex->addLayer(layer2);
	_layerMuticomplex->addLayer(layer3);

	_layerMuticomplex->switchTo(0);

	addChild(_layerMuticomplex,1);

    Size visibleSize = Director::getInstance()->getVisibleSize();
    Point origin = Director::getInstance()->getVisibleOrigin();

	Sprite* pSprite = Sprite::create("4.jpg");
	addChild(pSprite,0);

	MenuItemImage *pCloseItem1 = MenuItemImage::create(
		"CloseNormal.png",
		"CloseNormal.png",
		this,
		menu_selector(HelloWorld::menuCallback));

	MenuItemImage *pCloseItem2 = MenuItemImage::create(
		"CloseNormal.png",
		"CloseNormal.png",
		this,
		menu_selector(HelloWorld::menuCallback));

	MenuItemImage *pCloseItem3 = MenuItemImage::create(
		"CloseNormal.png",
		"CloseNormal.png",
		this,
		menu_selector(HelloWorld::menuCallback));

	// create menu, it's an autorelease object
	pCloseItem1->setTag(0);
	pCloseItem2->setTag(1);
	pCloseItem3->setTag(2);
	Menu* pMenu = CCMenu::create(pCloseItem1, pCloseItem2, pCloseItem3, NULL);
	pMenu->alignItemsHorizontallyWithPadding(30);
	pMenu->setPosition(visibleSize.width/2,25);
	this->addChild(pMenu,1);
    
    return true;
}


void HelloWorld::menuCloseCallback(Object* pSender)
{
    Director::getInstance()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}

void HelloWorld::menuCallback( CCObject* pSender )
{
	const int item=((CCMenuItemImage*)pSender)->getTag();
	if (item!=curLayerPos)
	{
		_layerMuticomplex->switchTo(item);
		curLayerPos=item;
	}
}

效果图就不展示了,很简单。



  


  
分享到:
评论

相关推荐

    easyeda-toggleview:扩展程序,使您可以在顶视图和底视图之间切换PCB视图

    单击ToggleView ,可以在常规视图和翻转视图之间切换当前的PCB编辑器视图。 在“ Flip on Layer上Flip on Layer菜单中,选择激活后应始终自动翻转的图层。 您始终可以使用ToggleLayer覆盖它。 已知的问题 X标尺未...

    vm-layer-builder

    您可以创建源的分支并在它们之间切换。 因为缓存是基于校验和的,所以只有在之前未构建图层输入的情况下,才会构建图层。 为什么要使用基于图层的图像生成器? 假设您将维护一个VM映像,您希望该映像会定期更新。 ...

    N-Layer-Architecture-Typescript:在N层体系结构上进行尝试,以支持将所有事物解耦到我们可以轻松在技术之间交换的点的想法

    最大的好处是,它使我们能够轻松地在技术之间切换并轻松进行测试。 请注意,这是我编写N层体系结构的观点,我正处于开始学习更多有关TDD / DDD,清洁,洋葱,六边形体系结构的旅程的第一步。 如果您有任何反馈意见...

    PADS设计多层板时的走线层设置

    (就是定义按F4时在哪两层间切换)布线层对(Pairing Routing Layers)规定了层的改变,限制只在所定义的层对之间进行。对于一个四层板,定义的布线层对是主元件面(Primary Secondary Side)和次元件面(Secondary ...

    layer-pack:Webpack插件,用于导入glob,mono repo应用和可继承的npm软件包webpack配置

    在monorepo和npm依赖项结构之间切换 独立测试图层 一步编译,带有源映射 使用共享相同代码层的多个开发服务器 在继承的目录(来自本地或继承的包)上进行glob导入 import allModules from "App/modules/*.module.js...

    Leaflet.GeojsonLayerSwitcher:允许在GeoJSON层之间导航,选择一些层并返回选择

    在图层之间导航并切换选择状态。安装npm $ npm install --save leaflet-geojson-layer-switcher浏览器下载或克隆此github项目在项目中包含dist/Leaflet.GeojsonLayerSwitcher.min.js和dist/Leaflet....

    Pro 汽车油漆着色器 v2.8.1

    贴花/叠加图层(可以在透明体的背面和正面之间切换) 反光透明涂层 Matcap着色器有 基础层:包含基础涂料和菲涅耳涂料 Albedo与基础层为alpha 贴花/叠加图层(可以在其他图层下翻转) 反光透明涂层(可在...

    用户指引界面功能效果

    两个页面之间的过渡是渐隐渐现(淡入淡出 fade in and fade out)的动画效果。指引页面的文字有固定文字标题和随着页面切换而切换的文字标题。这种用户指引界面用在Path 3.0 App中。由于用了auto layout,所以只支持...

    d3-mapbox-template

    一个简单的D3-Mapbox十字形地图,该地图使用D3过渡在缩放时在D3地图视图和Web Tile地图视图之间切换。 依存关系 该模板使用gulp和browserify作为项目支架工具。 要使用它,您需要安装node和gulp。 要使用自制软件...

    ol-cesium:OpenLayers-Cesium集成

    在2D和3D之间平滑切换并同步: 地图上下文(边界框和缩放级别); 栅格数据源; 2D和3D中的矢量数据源; 地图选择(选定项目); 地图和地球视图之间的动画过渡。 该库是可配置和可扩展的,并允许: 延迟或...

    arcgis工具

    Shift:添加至/取消选择 Ctrl:移动选择锚 N:下一个被选要素 R:切换至旋转模式/从旋转模式切换 F:切换至要素模式/从要素模式切换 E:在Sketch工具、Edit工具和Edit Annotation工具间切换 L:在跟踪要素模式下将...

    400个DreamWeaver插件

    mxp/使一个多行的表格行和行之间颜色交替,像斑马线一样。2.0版本 mxp/可以倒出-倒入站点信息,方便其他开发者 mxp/插入e-Vue MPEG-4格式的文件 mxp/Mycomputer.com提供的一套Banner交换系统,使用起来需要注册,...

    emacs-evil-colemak-basics:Emacs软件包,带有带有Colemak键盘布局的邪恶模式的基本键重新绑定

    ) 作为Colemak和Qwerty之间的智能混合体而设计的,它特别适合那些在切换到Colemak之前在Qwerty键盘上使用Vim的Colemak转换者。 所有按键(一个按键除外)均处于Colemak或Qwerty位置,具体取决于提供最符合人体工程...

    分布式数据层TDDL.zip

    淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,...

    autocad命令全集

    85 DIST DI 测量两点之间的距离 86 DIVIDE DIV 等分实体 87 DONUT DO 绘制圆环 88 DRAGMODE   控制是否显示拖动对象的过程 89 DRAWORDER DR 控制两重叠(或有部分重叠)图象的显示次序 90 DSETTINGS DS、SE 设置...

    华为路由器配置手册

    另外要注意异步串口的波特率只在路由器与Modem之间起作用,两台Modem之间的波特率则由它们互相协商确定,因此在异步方式下两端路由器的波特率设置可以不一致;在同步方式下,由DCE侧路由器决定线路传输的波特率,只...

    protel2004封装

    ctrl+tab——在打开的各个设计文件文档之间切换 alt+tab——在打开的各个应用程序之间切换 a——弹出edit\align子菜单 b——弹出view\toolbars子菜单 e——弹出edit菜单 f——弹出file菜单 h——弹出help菜单 j——...

    具有受信任和不受信任中继的无线MIMO交换:自由度观点

    我们研究了称为无线MIMO交换的多路中继网络的一般框架的自由度(DoF)和保密DoF,其中许多用户... 我们的结果在多路中继中在DoF和保密DoF之间架起了一座桥梁。 证明的方法可以普遍应用于分析其他中继网络中的保密DoF。

    yershop开源网店系统 v3.8.2.zip

    让应用的扩展更加方便,基于MVC(Model-View-Controller,模型-视图-控制器)模式,并且均支持多层(multi-Layer)设计,全面采用命名空间方式定义和加载类库文件,有效的解决多个模块之间的冲突问题,并且实现了更加...

    AutoCAD 2000三维造型

    1.1 三维和二维之间的差异 1 1.2 常用的三维术语 4 1.2.1 模型 4 1.2.2 线框模型 4 1.2.3 表面模型 4 1.2.4 实体模型 4 1.2.5 渲染 5 1.3 使用三维的理由 5 1.4 AutoCAD的三维能力 6 1.5 AutoCAD的局限 6 复习题 8 ...

Global site tag (gtag.js) - Google Analytics