About Scene

°ÔÀÓÀº SceneÀ¸·Î ÀÌ·ïÁø´Ù. SceneÀº ¿©·¯°³ÀÇ ·¹À̾î·Î ÀÌ·ïÁø´Ù.

SceneÀ» ¹Ù²Ù´Â ¹æ¹ý¿¡´Â 2°¡Áö°¡ ÀÖ´Ù.(¾Æ´Â Çѵµ ³»¿¡¼­)
SceneÀ» µ¤´Â ¹æ¹ý°ú SceneÀ» ±³Ã¼ÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù.

µÎ ¹æ¹ýÀÇ Â÷ÀÌ´Â ¾ÀÀ» ¿­¶§ , ´ÝÀ» ¶§ Â÷ÀÌ°¡ ÀÖ´Ù.

CCDirector::sharedDirector()->pushScene( pNewScene)    //¾ÀÀ» ¿­¶§
CCDirector::sharedDirector()->popScene( )    //¾ÀÀ» ´ÝÀ»¶§

SceneÀ» µ¤´Â ¹æ¹ýÀº ¾ÀÀ» ¿­¶§ push, ´ÝÀ» ¶§ pop ÇÑ´Ù.

CCDirector::sharedDirector()->replaceScene( pNewScene)    //¾ÀÀ» ¿­¶§
CCDirector::sharedDirector()->replaceScene( pOldScene)    //¾ÀÀ» ´ÝÀ»¶§

SceneÀ» ±³Ã¼ÇÏ´Â ¹æ¹ýÀº replaceScene( )À¸·Î ¿­¶§, ´ÝÀ» ¶§ µ¿ÀÏÇÏ°Ô »ç¿ëÇÑ´Ù.

 

SceneÀ» µ¤´Â ¹æ¹ý

PlusScene È£Ãâ
#include "PlusScene.h"
CCScene* pScene = PlusScene::scene();
CCDirector::sharedDirector()->pushScene( pScene);

ÄÚÄÚ½º2DÀÇ À§Àڵ忡¼­ scene( ) ¸Þ¼Òµå·Î ¾ÀÀ» »ý¼ºÇϹǷΠ°ü·Ê»ó ¶È°°ÀÌ ÇÑ´Ù.
±âÁ¸ ¾À¿¡ »õ·Î¿î ¾ÀÀ» µ¤´Â ¸í·ÉÀº pushSceneÀÌ´Ù.

plusescene.h
#ifndef _PLUSSCENE
#define _PLUSSCENE

#include "cocos2d.h"

class PlusScene : public cocos2d::CCLayerColor
{
public:
    virtual bool init();
    static cocos2d::CCScene* scene();
    CREATE_FUNC(PlusScene);
    void doClose(CCObject* pSender);
};

#endif

 

plusscene.cpp
#include "PlusScene.h"

using namespace cocos2d;

CCScene* PlusScene::scene()
{
    CCScene *scene = CCScene::create();
    PlusScene *layer = PlusScene::create();
    scene->addChild(layer);
    return scene;
}

bool PlusScene::init()
{
    //¸Þ´º »ý¼º ÄÚµå »ý·« ¸Þ´º¿¡¼­ doClose È£Ãâ
    return true;
}

void PlusScene::doClose(CCObject* pSender)
{
    CCDirector::sharedDirector()->popScene();
}

PlusScene::scene( )ÀÇ Äڵ带 º¸¸é ´ÙÀ½°ú °°ÀÌ ·¹À̾ Ãß°¡ÇÏ°í ÀÖ´Ù.

Scene »ý¼º / Layer »ý¼º / ¾À¿¡ ·¹À̾î Ãß°¡

CCScene *scene = CCScene::create();
PlusScene *layer = PlusScene::create();
scene->addChild(layer);

PluseScene::create´Â Çì´õ ÆÄÀÏÀÇ CREATE_FUNC(PlusScene)¿¡ ÀÇÇؼ­ »ý¼º µÈ °ÍÀÌ´Ù.
CREATE_FUNC ¸ÅÅ©·Î¿¡¼­ init( ) ¸â¹öÇÔ¼ö¸¦ È£Ãâ ÇÏ°í ÀÖ´Ù.

#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
    __TYPE__ *pRet = new __TYPE__(); \
    if (pRet && pRet->init()) \
    { \
        pRet->autorelease(); \
        return pRet; \
    } \
    else \
    { \
        delete pRet; \
        pRet = NULL; \
        return NULL; \
    } \
}

Init( )¿¡¼­ ¸Þ´º¸¦ ¸¸µé¾î ÁÖ°í ÀÖ´Ù.

¸Þ´º¸¦ Ŭ¸¯ÇÏ¿© ¾ÀÀ» ´ÝÀ» ¶§´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.

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

 

SceneÀ» ±³Ã¼ÇÏ´Â ¹æ¹ý

ReplaceScene È£Ãâ
#include "ReplaceScene.h"
CCScene* pScene = ReplaceScene::scene();
CCDirector::sharedDirector()->replaceScene( pScene );

±âÁ¸ ¾À¿¡ »õ·Î¿î ¾ÀÀ» ±³Ã¼ÇÏ´Â ¸í·ÉÀº replaceSceneÀÌ´Ù.

ReplaceScene.h
//ReplaceScene.h
#ifndef _REPLACESCENE
#define _REPLACESCENE

#include "cocos2d.h"

class ReplaceScene : public cocos2d::CCLayerColor
{
public:
    virtual bool init();
    static cocos2d::CCScene* scene();
    CREATE_FUNC(ReplaceScene);
    void doClose(CCObject* pSender);
};

#endif

 

ReplaceScene.cpp
#include "ReplaceScene.h"
#include "HelloWorldScene.h"

using namespace cocos2d;

CCScene* ReplaceScene::scene()
{
    CCScene *scene = CCScene::create();
    ReplaceScene *layer = ReplaceScene::create();
    scene->addChild(layer);
    return scene;
}

bool ReplaceScene::init()
{
    //¸Þ´º »ý¼º ÄÚµå »ý·«, ¸Þ´º¿¡¼­ doClose È£Ãâ
}

void ReplaceScene::doClose(CCObject* pSender)
{
    CCScene* pScene = HelloWorld::scene();
    CCDirector::sharedDirector()->replaceScene( pScene );
}

¾ÀÀ» ´ÝÀ» ¶§ replaceSceneÀ¸·Î SceneÀ» ±³Ã¼ ÇØÁÖ°í ÀÖ´Ù.

PlusScene.h
PlusScene.cpp
ReplaceScene.h
ReplaceScene.cpp

 

Scene ±³Ã¼½Ã ºÒ¸®´Â ¸Þ¼­µå

´ÙÀ½ÀÇ ¸Þ¼­µåµéÀ» Ãß°¡ÇÏ°í scene°ú init¿¡µµ CCLog¸¦ ÀÌ¿ëÇÏ¿© ·Î±×¸¦ Ãß°¡ ÇÏ¿´´Ù.

virtual ~ReplaceScene()
virtual void onEnter()
virtual void onEnterTransitionDidFinish()
virtual void onExitTransitionDidStart()
virtual void onExit()

CCScene* ReplaceScene::scene()
{
    CCLog("ReplaceScene::scene");
     //~~~ ÄÚµå »ý·« ~~~
}

ÀÌ·¸°Ô Çؼ­ ½ÇÇàÇغ¸¸é ¸Þ¼­µåÀÇ ½ÇÇà ¼ø¼­´Â ´ÙÀ½°ú °°´Ù.

ReplaceSceneÀ¸·Î ±³Ã¼½Ã ºÒ¸®´Â ¸Þ¼­µå
ReplaceScene::scene
ReplaceScene::init
ReplaceScene::onEnter
HelloWorld::onExit
ReplaceScene::onEnterTransitionDidFinish
HelloWorld Deconstructor

HelloWorld·Î ±³Ã¼½Ã ºÒ¸®´Â ¸Þ¼­µå
HelloWorld::scene
HelloWorld::init
ReplaceScene::onExit
ReplaceScene Deconstructor
HelloWorld::onEnter
HelloWorld::onEnterTransitionDidFinish

±âÁ¸ ÆÄÀÏ°ú ±¸ºÐÇϱâ À§ÇÏ¿© "log_" Á¢µÎ¾î¸¦ Ãß°¡ÇÏ¿© ÆÄÀÏ À̸§À» ¼öÁ¤ÇÏ¿´´Ù.

log_HelloWorldScene.h
log_HelloWorldScene.cpp
log_ReplaceScene.h
log_ReplaceScene.cpp