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

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


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值