cocos2dX 学习笔记——跳转场景

时间:2024-04-04 13:26:54

俗话说:“活到老,学到老”。我还这么年轻,看来要学的还有很多呦<・)))><< 。所以今天呢就学习一下cocos的跳转场景

首先新建一个项目起名:jumpscene  就把HelloWord当做第一个场景,然后绘制按钮实现点击跳转第二个场景。

先在helloWord场景的init中声明一个菜单按钮

//获取尺寸;
    Size visiableSize = Director::getInstance()->getVisibleSize();
    //声明一个label                显示的文本  字体资源   文本大小;
    auto label = Label::createWithSystemFont("this is MyFirstScene", "calibri.ttf", 30);
    //  HelloWorld::EnterSecondScene是回调函数,参数是: EnterSecondScene(Ref * ref);   
    //CC_CALLBACK_1  绑定一个函数为回调函数  _1 代表这个函数只有一个参数;
    auto menuItem = MenuItemLabel::create(label, CC_CALLBACK_1(HelloWorld::EnterSecondScene, this));
    //创建菜单有很多方法 MenuItemLabel 、MenuItemImage 、MenuItemSprite;
    auto menu = Menu::create(menuItem, NULL);
    this->addChild(menu);

这里面添加了一些关于文本的属性。

cocos2dX 学习笔记——跳转场景

写完之后再创建第二个脚本,

首先找到源文件中Classes文件,在里面创建两个文本文档修改名字和后缀名 (.cpp 和 .h),然后回到项目中点击src右键添加现有项目 ,把这两个文件添加进去 ,到此一个新的脚本就创建成功了。或者复制上面的脚本,改一下名字也可以。

cocos2dX 学习笔记——跳转场景

然后开始编写第二个脚本; 可以依据脚本一编写 。

.h中:

#include "HelloWorldScene.h"
#include "cocos2d.h"


class SecondScene:public cocos2d:: Layer
{
public:
    static cocos2d::Scene * CreateScene();

    CREATE_FUNC(SecondScene);

    virtual bool init();

    void EnterFirstScene(Ref * ref);

};

cocos2dX 学习笔记——跳转场景

.cpp中:

#include "SecondScene.h"

USING_NS_CC;

cocos2d::Scene * SecondScene::CreateScene()
{
    Scene * scene = Scene::create();
    SecondScene * layer = SecondScene::create();
    scene->addChild(layer);
    return scene;
}

bool SecondScene::init()
{
    if (!Layer::init())
    {
        return false;
    }

//图片资源放在res文件夹里面
    MenuItemImage * pMenuImage = MenuItemImage::create(
        "fen.png", //正常状态的图片;
        "xiang.png",  //被点击的图片;
        this,
        menu_selector(SecondScene::EnterFirstScene)); //声明的回调函数;
                                                      //设置位置;
    pMenuImage->setPosition(
        Director::getInstance()->getVisibleSize().width / 3,
        Director::getInstance()->getVisibleSize().height / 3);

    Menu * pMenu = Menu::create(pMenuImage, NULL);
    this->addChild(pMenu);

    return true;

}


cocos2dX 学习笔记——跳转场景

然后回到第一个脚本中编写按钮的事件,使其跳转到第二个场景。

//在头文件中声明  ;
void HelloWorld::EnterSecondScene(Ref * ref)
{
    //切换场景会有两种方法 ;一种replaceScene  一种是:pushScene  ;
    //区别在于前者释放了当前场景;
    //后者会把当前场景压入栈中保存 pushScene的场景要切换回来只需在子场景中调用popscene ,相当于原来的场景暂停了一会;
    
    //Director::getInstance()->replaceScene(TransitionCrossFade::create
    // (1.5f, SecondScene::CreateScene()));

    Director::getInstance()->pushScene(TransitionPageTurn::create
    (1.5f,SecondScene::CreateScene(),true));
}

 

cocos2dX 学习笔记——跳转场景

这样就可以跳转到第二个场景了。然后在第二个脚本.cpp里面写跳回第一场景。

void SecondScene::EnterFirstScene(Ref * ref)
{
    Director::getInstance()->replaceScene(TransitionMoveInB::create(1.5f, HelloWorld::createScene()));
}

cocos2dX 学习笔记——跳转场景