关于cocos2dx 3.0 跳转场景

​    至于场景(Sence)的概念,就不在这里赘述了。以免让有些人弄晕了头。不过,既然我们需要的是跳转场景,则需要创建好 .h .cpp 各两个
    我们最好先来看一下关于Sence的定义(快捷键是F12):
class CC_DLL Scene : public Node{
public:
    static Scene *create();
​    virtual Scene *getScene() override;
​    using Node::addChild;
    virtual std::string getDescription() const override;
……}
    此类继承自 Node 。除此之外十分简单,也无需过多纠结。这并不是我们目前需要关心的问题。
    接下来,我们要创建 .cpp .h 文件,这对于每一个人来说都很熟悉了。
    
    #ifndef _myWorld_H   //这两个均为定义,必须独一无二,也可以叫做 “保护宏”
    #define _myWorld_H // 可以防止相同的文件出现
​    
    #include " cocos2d.h " // 可以理解为运行到这里时,会进入cocos2d.h 中
    
    class myWorld : public cocos2d::Layer{
public:
static cocos2d:: Scene*createScene(); //通过静态函数创建一个场景
virtual bool init();  //这里进行的是初始化
void menuCloseCallback(cocos2d::Ref*pSender);
CREATE_FUNC(myWorld); // 通过一个 “宏” 定义 create函数,如果最后将此注释,就只有一个黑屏
};
#endif

接下来是实现: 在 .cpp 中
    #include "myWorld.h"
    #include "TestWorld.h"  

USING_NS_CC;

Scene*myWorld:: createScene()
{
auto scene = Scene::create();
auto layer = myWorld::create();
scene->addChild(layer);
return scene;
}
bool myWorld::init()
{
auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(myWorld::menuCloseCallback,this));
closeItem->setPosition(Director::getInstance()->convertToGL(Point(600,600)));
// 上面这句是转换成OpenGL 坐标的方法
auto menu =Menu::create(closeItem,0);
menu ->setPosition(Point::ZERO);
this->addChild(menu,1);
auto sprite= Sprite::create("Skyworld.jpg");
sprite->setPosition(Point(0,0));
this ->addChild(sprite,0);
return true;

}

void myWorld::menuCloseCallback(Ref*pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
    return;
#endif
    //Director::getInstance()->end();
    //上面那句是当按下按钮时发生的事件,下面这句则是跳转场景
    Director::sharedDirector()->replaceScene(TestWorld::createScene());
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif

    代码中出现的 TestWorld  则是需要跳转的场景,至于方法与创建第一个场景没有区别,故此就不在这里多占篇幅了。需要注意的是,图片资源需要放在项目中的 //Resources ,还需要注意的是图片的名字,否则当你敲上代码后很有可能会出现中断的错误。
    确认其他地方都没有错误后,那么,就有可能是图片命名的问题!
    最后……祝跳转好运  ~ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值