cocos2d-x-3.0rc1 学习笔记3(场景切换)


    要想场景切换,就必须要先建立一个新的场景,或直接切换原场景,可以再菜单按钮的回调函数上实现

helloworld.h  中添加

class MyScene:public cocos2d::Scene 
{ 
public: 
	MyScene(); 
public: 
	virtual void onEnter(); 
	virtual void runThisTest(); 
	void NextSceneCallback(Ref* pSender); 
	void LastSceneCallback(Ref* pSender); 
}; 
class LayerPanda:public cocos2d::Layer 
{ 
public: 
	LayerPanda(); 
	~LayerPanda(); 
public: 
	virtual void onEnter(); 
}; 
class LayerRabbit:public cocos2d::Layer 
{ 
public: 
	LayerRabbit(); 
	~LayerRabbit(); 
public: 
	virtual void onEnter(); 
}; 


helloworld.cpp  中添加


LayerPanda::LayerPanda() 
{  
	auto size = Director::sharedDirector()->getWinSize(); 
	auto pSpritepanda =  Sprite::create("panda.png"); 

	pSpritepanda->setPosition(ccp(size.width/2,size.height/2)); 
	addChild(pSpritepanda);   
} 
void LayerPanda::onEnter() 
{ 
	CCLayer::onEnter(); 
} 

LayerRabbit::LayerRabbit () 
{  

	auto size =Director::sharedDirector()->getWinSize();
	Sprite* pSpriteRabbit =  Sprite::create("rabbit.png"); 
	pSpriteRabbit->setPosition(ccp(size.width/2,size.height/2)); 
	this->addChild(pSpriteRabbit);
} 
LayerPanda::~LayerPanda() 
{ 
} 
LayerRabbit ::~LayerRabbit () 
{ 
} 
void LayerRabbit ::onEnter() 
{ 
	CCLayer::onEnter(); 
} 

MyScene::MyScene() 
{ 
	Scene::init();  
	MenuItemFont* item1 = MenuItemFont::create( "Next", this, menu_selector(MyScene::NextSceneCallback) );
	MenuItemFont* item2 = MenuItemFont::create( "Last", this, menu_selector(MyScene::LastSceneCallback) );
	auto s= Director::getInstance()->getVisibleSize();
	Menu* menu = Menu::create( item1, item2, NULL );
	item1->setPosition(s.width/3,s.height/3);
	item2->setPosition(s.width/3,s.height/3+30);
	menu->setPosition(CCPointZero);
	addChild( menu,1 );
} 
void MyScene::NextSceneCallback(Ref *pSender) 
{ 
	Scene* scene =new MyScene(); 
	Layer* pLayer = new LayerRabbit(); 
	scene->addChild(pLayer, 0); 
	Director::sharedDirector()->pushScene(scene); 
	scene->release(); 
	pLayer->release(); 
} 
void MyScene::LastSceneCallback(Ref* pSender) 
{ 
	Scene* scene =new MyScene(); 
	Layer* pLayer = new LayerPanda(); 
	scene->addChild(pLayer, 0); 
	Director::sharedDirector()->pushScene(scene); 
	scene->release(); 
	pLayer->release(); 
} 
void MyScene::onEnter() 
{ 
	Scene::onEnter(); 
} 
void MyScene::runThisTest() 
{ 
	Layer* pLayer = new LayerPanda(); 
	addChild(pLayer); 
	pLayer->release(); 
	Director::sharedDirector()->replaceScene(this); 
} 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值