cocos3 场景切换

helloworld.cpp

#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    
    Sprite* sp=Sprite::create("1.png");
    sp->setPosition(visibleSize.width/2,visibleSize.height/2);
    addChild(sp);

    EventListenerTouchOneByOne* listener=EventListenerTouchOneByOne::create();
    listener->onTouchBegan=[sp](Touch *t,Event *e){
        if(sp->getBoundingBox().containsPoint(t->getLocation()))
        {
            Director::getInstance()->replaceScene(ImageScene::createScene());
        }
        else
        {
            log("1111");
        }
        return true;
    };
    Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,sp);
    return true;
}


void HelloWorld::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();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}

imagescene.h

#pragma once

#include "cocos2d.h"
USING_NS_CC;

class ImageScene:public Layer
{
public:
    static Scene* createScene();
    virtual bool init();
    CREATE_FUNC(ImageScene);
};

imagescene.cpp

#include "ImageScene.h"

Scene* ImageScene::createScene()
{
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auto layer = ImageScene::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}
bool ImageScene::init()
{
    if(!Layer::init())
    {
        return false;
    }
    Sprite* sp=Sprite::create("HelloWorld.png");
    sp->setPosition(200,200);
    addChild(sp);
    return true;
}

 

posted @ 2014-12-07 08:19  yufenghou  阅读(227)  评论(0编辑  收藏  举报