cocos2d-x学习之场景切换

游戏中经常会发现场景之间的切换,今天就来谈谈cocos2d-x是怎样实现场景中的切换的。

好吧,还是用一个例子来说明一下;我们先来创建两个不同场景

(ps:两个场景的代码差不多只是背景图片的不同,所以这里就只写出第一个场景的代码)


scene_1.h:

#ifndef _SCENE_1_H_
#define _SCENE_1_H_

#pragma once
#include "cocos2d.h"

using namespace cocos2d;

class scene_1 : public CCLayer
{
public:
virtual bool init();
static cocos2d::CCScene* scene();
void ItemScene2Callback(CCObject* pSender);

CREATE_FUNC(scene_1);
};

#endif


scene_1.c:

#include "scene_1.h"
#include "scene_2.h"

//创建场景
CCScene scene_1::scene()
{
CCScene *scene = CCScene::create(); 
scene_1 *layer = scene_1::create();
scene->addChild(layer);
return scene;

}


//初始化
bool scene_1::init()
{
if ( !CCLayer::init() )
    {
        return false;
    }


CCSize size = CCDirector::sharedDirector()->getVisibleSize();

CCSprite *background = CCSprite::create("g.png");


background->setPosition(ccp(size.width/2,size.height/2));

this->addChild(background);

CCMenuItemImage *ItemScene2 = CCMenuItemImage::create( 
                                        "scene2Item.png",
                                        "scene2Item.png",
                                        this,
menu_selector(scene_1::ItemScene2Callback));//在按钮回调函数中实现场景切换

ItemScene2->setPosition(ccp(100,100));
CCMenu *pMenu = CCMenu::create(ItemScene2,NULL);
        pMenu->setPosition(CCPointZero);
this->addChild(pMenu,0);

return true;
}


//点击按钮的回调函数

void scene_1::ItemScene2Callback(CCObject* pSender)
{
  //用replaceScene切换场景,是用参数里的场景替换当前活动的场景
  CCDirector::sharedDirector()->replaceScene(scene_2::scene());
   /******************************************************************
  //跟上面的函数一样,不过加多了一个场景切换的效果,切换效果有很多种,读者可以自己去试试
  CCDirector::sharedDirector()->replaceScene(CCTransitionSlideInT::create(1, scene_2::scene());

  //用replaceScene是把当前活动场景压入一个队列,运行参数里的场景;
  CCDirector::sharedDirector()->pushScene(scene_2::scene());
      
  //跟上面的函数一样,也只是加多了场景切换效果
  CCDirector::sharedDirector()->pushScene(CCTransitionSlideInT::create(1, scene_2::scene());
  ***********************************************************************/

 }

如果scene_1中用的是pushScene压入队列的方式,那么在scene_2中de 按钮点击回调函数就要注意了,可以用

 CCDirector::sharedDirector()->popScene();

从队列中弹出scene_1继续来运行从而实现场景切换;

这样关于场景切换的小小实现就完成,希望对大家有帮助

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值