IT/- 프로그래밍
Cocos 화면 전환하기
혁준7519
2017. 3. 3. 08:43
화면 전환하기
c++)
화면A
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include "test156.hpp" #include "GameScene.hpp" USING_NS_CC; Scene* Test156::createScene() { auto scene = Scene::create(); auto layer = Test156::create(); scene->addChild(layer); return scene; } bool Test156::init() { //현재 화면 배경색은 파랑색 if ( !LayerColor::initWithColor(Color4B(0, 0, 255, 255))) { return false; } //MenuItemFont::create(메뉴명, 메뉴 클릭시 실행되는 콜백함수) auto item1 = MenuItemFont::create("Replace Scene", CC_CALLBACK_1(Test156::replaceScene, this)); auto item2 = MenuItemFont::create("Push Scene", CC_CALLBACK_1(Test156::pushScene, this)); auto item3 = MenuItemFont::create("Pop Scene", CC_CALLBACK_1(Test156::popScene, this)); auto menu = Menu::create(item1, item2, item3, NULL); menu->alignItemsVertically(); this->addChild(menu); return true; } //화면전환 //Director::getInstance()->replaceScene(넘어갈려는 화면) //replaceScene : 새로운 화면을 생성하고 이전화면은 메모리에서 해제한다 //pushScene : 화면전환시 이전에 있었던 화면은 그대로 있고 새로운 화면이 보인다 //popScene : 현재화면을 메모리에서 해제하여 이전 화면을 보인다 void Test156::replaceScene(Ref *sender){ Director::getInstance()->replaceScene(GameScene::createScene()); } void Test156::pushScene(Ref *sender){ Director::getInstance()->pushScene(GameScene::createScene()); } void Test156::popScene(Ref *sender){ Director::getInstance()->popScene(); } | cs |
화면B
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 36 37 38 39 | #include "GameScene.hpp" #include "test156.hpp" USING_NS_CC; Scene* GameScene::createScene() { auto scene = Scene::create(); auto layer = GameScene::create(); scene->addChild(layer); return scene; } bool GameScene::init() { if ( !Layer::init()) { return false; } //MenuItemFont::create(메뉴명, 메뉴 클릭시 실행되는 콜백함수) auto item = MenuItemFont::create("Test156 Scene", CC_CALLBACK_1(GameScene::pushScene, this)); auto menu = Menu::create(item, NULL); menu->alignItemsHorizontally(); this->addChild(menu); return true; } void GameScene::pushScene(Ref *sender){ Director::getInstance()->pushScene(Test156::createScene()); } | cs |
결과
메뉴를 클릭하면 두화면이 전환된다