본문 바로가기

카테고리 없음

[cocos2d-x]화면전환예제()

replaceScene() 메소드는 화면을 전환할 때 새로운 화면을 생성해서 화면을 전환 하고 

이전에 화면 클래스는 메모리에서 해제합니다. 


GameScene.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
#include "GameScene.h"
#include "MenuScene.h"
 
Scene* GameScene::createScene()
{
    auto scene = Scene::create();
 
    auto layer = GameScene::create();
    scene->addChild(layer);
 
    return scene;
}
 
bool GameScene::init()
{
    if (!Layer::init())
    {
        return false;
    }
 
    auto item = MenuItemFont::create("Menu Scene", CC_CALLBACK_1(GameScene::changeScene, this));
 
    auto menu = Menu::create(item, NULL);
    menu->alignItemsHorizontally();
    this->addChild(menu);
 
    return true;
}
 
 
void GameScene::changeScene(Ref *sender)
{
    Director::getInstance()->replaceScene(MenuScene::createScene());
}
cs


MecuScene.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "MenuScene.h"
#include "GameScene.h"
 
Scene* MenuScene::createScene()
{
    auto scene = Scene::create();
 
    auto layer = MenuScene::create();
    scene->addChild(layer);
 
    return scene;
}
 
bool MenuScene::init()
{
    if (!LayerColor::initWithColor(Color4B(00255255))) //구분을 하기 위해 배경화면 변경
    {
        return false;
    }
 
    auto item = MenuItemFont::create("Game Scene", CC_CALLBACK_1(MenuScene::changeScene, this));
 
    auto menu = Menu::create(item, NULL);
    menu->alignItemsHorizontally();
    this->addChild(menu);
 
    return true;
}
 
void MenuScene::changeScene(Ref *sender)
{
    Director::getInstance()->replaceScene(GameScene::createScene());
//
}
cs

 


pushScene()과 popScene()은 스택구조방식이며

눈에 보이는 실행 결과는 replaceScene()과 같습니다.


실행 결과