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

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

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



  


  
分享到:
评论

相关推荐

    叶片泵建模例子

    在hub layer和shroud layer之间切换,可以分别定义叶片厚度的轮廓,确保叶片结构的完整性和流体动力学性能。 在定义叶片厚度时,通常会使用Bezier曲线来控制叶片的厚度变化,这可以通过调整多个控制点实现。首先,...

    Protel99se和AD6.9和游戏的完美结合_快捷键妙用

    - Q:SetCurrentLayer(设置当前层),可以在TopLayer和BottomLayer之间切换,方便设计时不中断布线而切换层; - Z:SnapGrid(设置捕获网格大小),用于调整画线和放置过孔时的移动最小单位。 通过上述方式,设计...

    layer搭建的NB后台管理系统

    每个模块可能对应一个layertab,用户可以根据需要在不同的tab之间切换,进行相应的操作。这样的设计遵循了后台管理系统的一般原则,即以模块化的方式组织功能,使得操作更加直观和高效。 至于"layer模板",这通常是...

    AE的3D Layer三维图层菜单.pdf

    “Blending Mode(混合模式)”是AE中的一个重要特性,通过选择不同的混合模式,可以改变图层之间的颜色混合方式,从而创建出各种视觉效果,如叠加、柔光、差值等。Next Blending Mode和Previous Blending Mode则...

    arcgis api for js实现动态切换底图(淡入淡出效果)

    在切换底图时,实际上就是在不同的图层之间进行切换。而淡入淡出效果则可以通过CSS3的过渡(transition)属性或者JavaScript的动画库来实现。 1. **创建地图和图层** - 使用`esri.Map`类创建地图对象,指定一个...

    openlayer3加载谷歌地图例.rar

    最后,为了让用户能够在不同地图类型之间切换,你可以创建一个按钮组,通过调用`map.getLayers().getArray()`获取所有图层,然后根据用户选择动态显示或隐藏相应的图层。 WebGIS(Web地理信息系统)是基于Web的地理...

    基于springboot的mysql,sqlserver,oracle数据源切换

    在IT行业中,数据库是应用程序的重要组成部分,特别是在大型系统中,数据源的切换能力至关重要。...开发者可以根据业务需求,轻松地在MySQL、SQLServer和Oracle之间切换,提高了系统的灵活性和可维护性。

    SD Specifications_Part_1_Physical_Layer_Specification_Ver3.00_Final_090416.pdf

    规范定义了不同工作模式下的功耗要求,如待机模式、休眠模式和关断模式,以及如何在不同模式之间切换,以实现能源效率和延长电池寿命。 总的来说,《SD Specifications Part 1 Physical Layer Specification Ver...

    iClient for Andorid地图切换

    通过地图切换,用户可以在不同的地图源之间自由选择,如卫星图、地形图、矢量图等,满足不同场景下的需求。在Android平台上,iClient for Android提供了一套完整的API接口来支持这一功能。 在iClient for Android中...

    AIGS2.0解读中文layer2&layer7.doc

    TMA模式设置过程支持旁路设置,即设备可以在正常模式和旁路模式之间切换。当从设备接收到初始化信息时,应首先设置TMA对应的模式,并返回相应的状态标志。 #### TMAGetMode 此过程用于查询TMA当前的工作模式。从...

    论文研究-媒质独立切换业务对移动IPv6切换性能的改善 .pdf

    随着无线移动通信技术的飞速发展,移动数据业务需求的不断增长,异构网络之间的无缝切换成为业界关注的核心问题。本文详细分析了媒质独立切换业务(Media Independent Handoff, MIH)技术对移动IPv6切换性能的改善...

    Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications

    7. 动态频率选择(DFS):动态频率选择技术允许无线设备在无线信道之间动态切换,以避免干扰并提升网络通信质量。DFS常用于使用5GHz频段的WLAN中。 8. 无线通信参数:提及了关于射频(RF)、功率管理、服务质量...

    cocos2d-x 场景切换

    在游戏开发或者应用设计中,场景切换是一个至关重要的环节,它决定了用户在不同界面之间的流畅体验。cocos2d-x作为一款广泛使用的2D游戏引擎,其场景管理功能强大且灵活,能够帮助开发者实现各种复杂的场景过渡效果...

    ios 控制器切换特效

    1. **使用UIStoryboardSegue**:UIStoryboardSegue是UIStoryboardSegue类的对象,用于在故事板中连接两个视图控制器并控制它们之间的转场。通过重写`perform`方法,你可以自定义segue的执行过程,包括动画效果。 2....

    OpenLayers实现图层切换控件

    在OpenLayers中,图层切换控件是用于让用户在多个图层之间自由切换的重要功能。由于OpenLayers库本身并未直接提供这样的控件,开发者需要自定义来实现这一功能。本文将详细介绍如何利用OpenLayers创建一个图层切换...

    UIView和Coco2d-x场景之间的相互切换

    在具体实践中,你可能需要研究这些文件,理解它们如何实现`UIView`和Cocos2d-x之间的切换,以及它们是如何协调通信的。 总的来说,`UIView`和Coco2d-x的场景切换是iOS游戏开发中常见的技术挑战,它要求开发者对两者...

    IOS开发中3D切换效果

    这种效果常用于视图控制器之间的过渡,比如在TabBar或NavigationController中的页面切换,或者是自定义的UI组件滑动展示。下面将详细讨论如何在iOS应用中实现3D切换效果。 首先,我们需要了解iOS动画的基础知识。...

    openlayer2.13

    标题提到的"openlayer2.13"是OpenLayers库的一个特定版本,而描述中提到的"最新"可能是指发布时的状态,尽管现在可能有更新的版本存在。 OpenLayers 2.13 版本的关键特性包括: 1. **多图层支持**:用户可以添加...

    多图GSM第三层信令(多图详解GSM Layer 3 Message)

    GSM系统由多个层次组成,其中第三层(Layer 3)是网络和无线接口之间的重要通信层,负责处理高层协议和服务,如无线资源管理、移动性管理和呼叫控制。以下是对这些关键领域的详细解释: 1. **无线资源管理(Radio ...

    SD Specifications Part 1 Physical Layer Specification version 2.00.pdf

    - 工作模式,如SD模式和SPI模式,以及它们之间的切换机制。 SD卡规格的更新还关注于安全性和可靠性,包括读写保护、版权管理和其他安全特性。这些特性对于防止未授权访问和数据泄露至关重要,尤其在数字媒体设备、...

Global site tag (gtag.js) - Google Analytics