使用cocos2d-x 2.0.1 自动循环切换场景

由于cocos2d-x 2.0.1 的引擎里面改了很多方法明, 比如新建的场景由node改为create等。


下面是我使用最新的引擎写的一个简单的切换场景。 


 要切换的头文件 里面有继承  CCLayerColor跟CCScene场景类。

下面是头文件GameOver.h

#pragma once

#include "cocos2d.h"
using namespace cocos2d;
class GameOverLayer2 : public cocos2d::CCLayerColor
{
public:
	GameOverLayer2(void);
	~GameOverLayer2(void);

	bool init();

	void gameOverDone();

	LAYER_CREATE_FUNC(GameOverLayer2);
	CC_SYNTHESIZE_READONLY(CCLabelTTF *,_ttf,Ttf);

};

class GameOverScene2 : public cocos2d::CCScene
{
public:

	~GameOverScene2();

	bool init();
	
	SCENE_CREATE_FUNC(GameOverScene2);
	CC_SYNTHESIZE_READONLY(GameOverLayer2 *,_layer,Layer);

};
下面是GameOver.cpp文件

#include "GameOver.h"
#include "HelloWorldScene.h"

GameOverLayer2::GameOverLayer2(void)
{
}

GameOverLayer2::~GameOverLayer2(void)
{
	if(_ttf)
	{
		_ttf->release();
		_ttf = NULL;		
	}	
}


void GameOverLayer2::gameOverDone()
{
	CCDirector::sharedDirector()->replaceScene(HelloWorld::scene());
}

bool GameOverLayer2::init()
{
	if (CCLayerColor::initWithColor(cocos2d::ccc4(255,255,255,255)))
	{
		CCSize size = CCDirector::sharedDirector()->getWinSize();

		this->_ttf = CCLabelTTF::create("","Artial",33);
		//没有使用retain保留会报堆栈出错
		this->_ttf->retain();
		this->_ttf->setPosition(ccp(size.width/2,size.height/2));

		this->addChild(_ttf);

		this->runAction(CCSequence::create(
			CCDelayTime::create(3),CCCallFunc::create(this,callfunc_selector(GameOverLayer2::gameOverDone)),NULL));
		return true;
	}

	return false;
}

GameOverScene2::~GameOverScene2()
{

	if(_layer)
	{
		_layer->release();
		_layer = NULL;
	}
}

bool GameOverScene2::init()
{
	if(CCScene::init())
	{
		_layer = GameOverLayer2::create();	
		_layer->retain();
		this->addChild(_layer);
		return true;
	}
	return false;
}

然后可以在HelloWorldScene.cpp的 init 函数体里加入

this->runAction(CCSequence::create(
			CCDelayTime::create(3),
			CCCallFunc::create(this,
					callfunc_selector(HelloWorld::changeScene)),NULL));

同时在HelloWorldScene.cpp 写个方法changeScene

代码如下:

void HelloWorld::changeScene()
{
	//GameOverScene* gameScene = GameOverScene::create();
	GameOverScene2* gameScene = GameOverScene2::create();
	gameScene->getLayer()->getTtf()->setString("where my love~~");

	CCDirector::sharedDirector()->replaceScene(gameScene);

}
记住要引用头文件。~  


这样你会发现场景每3秒切换一次。


 ~~  ok!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八_戒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值