안드로이드/cocos2d-x2016. 1. 16. 23:56

프로젝트 생성하기

 http://gharlic.tistory.com/21 

위 게시물을 참고해 프로젝트를 생성한다.

 윈도우키 + R -> cmd 실행 -> cd C:\CocosProject 입력

cocos new [프로젝트 이름] -p com.[패키지 이름].[프로젝트 이름] -l cpp를 입력

ex) cocos new puzzleTest -p com.puzzleTest.puzzleTest -l cpp

 

 

 

 

프로젝트 실행하기

 프로젝트 폴더\project\puzzleTest\proj.win32 디렉토리에서 puzzleTest.sln파일을 실행하여

Visual Studio 2013에서 개발을 시작할 준비를 한다.

 

 

 

 

가로모드 / 세로모드 설정하기

 프로젝트 폴더\proj.android\AndroidManifest.xml파일을 실행한다. (메모장 등등으로)

위 사진의 밑 줄 친 부분의 android:screenOrientation= 을 아래 값으로 수정한다. 여기선 세로모드를 선택한다.

 가로모드 : "Landscape"

 세로모드 : "Portrait"

 

 

 

 

 

다양한 해상도 지원

 Visual Studio에서 AppDelegate.cpp를 편집한다.

bool AppDelegate::applicationDidFinishLaunching()함수에 다음 내용을 추가한다.

1
2
3
4
    // 다양한 해상도 지원
    Size winSize = Director::sharedDirector()->getWinSize();
    glview->setFrameSize(winSize.width, winSize.height);
    glview->setDesignResolutionSize(DESIGN_WIDTH, DESIGN_HEIGHT, kResolutionShowAll);
cs

getWinSize() 함수는 현재 디바이스의 해상도를 받아오는 역할

setDesignResolutionSize() 함수에 내가 디자인한 해상도를 입력한다.

 

 

 

 

공통 선언 파일

 위의 코드를 보면 DESIGN_WIDTH와 DESIGN_HEIGHT가 있는데 이 것은 cocos2D에서 지원하는 전처리가 아니다.

보다 간편한 개발을 위해서 프로젝트 이름\Classes폴더에 Common.h 파일을 생성하고

이 파일에 앞으로 자주 등장하는 상수를 미리 설정해두는 것이다.

1
2
3
4
5
6
7
8
9
10
#ifndef PuzzleTest_Common
#define PuzzleTest_Common
#include "cocos2d.h"
 
USING_NS_CC;
 
#define DESIGN_WIDTH    1080.0f
#define DESIGN_HEIGHT    1920.0f
 
#endif
cs

앞으로 이 파일에 내용을 계속 추가해 나갈 것이다.

 

HellowWorldScene 말고 내가 만든 Scene출력하기

AppDelegate.cpp파일의 bool AppDelegate::applicationDidFinishLaunching() 함수를 보면

1
2
    // create a scene. it's an autorelease object
    auto scene = HellowWorldScene::createScene();
cs

위 와 같은 코드를 찾을 수 있다.

 

솔루션 탐색기의 HellowWorldScene.cpp와 HellowWorldScene.h파일에 있는 createScene() 함수를 호출하여

Scene을 생성하는 것이다.

이 부분을 다음과 같이 변경한다.

1
2
    // create a scene. it's an autorelease object
    auto scene = CGameLayer::createScene();
cs

 

그 다음 프로젝트 우 클릭 -> 추가 -> 클래스에서 CGameLayer파일을 생성한다.

 

CGameLayer.h

1
2
3
4
5
6
7
8
9
10
11
12
13
#ifndef PuzzleGame_GameLayer
#define PuzzleGame_GameLayer
 
#include "Common.h"
 
class CGameLayer : public cocos2d::Layer {
public:
    static cocos2d::Scene* createScene();
 
    virtual bool init();
 
    CREATE_FUNC(CGameLayer);
#endif
cs

 

CGameLayer.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
#include "GameLayer.h"
#include "GameObject.h"
#include <stdio.h>
#include <string.h>
 
USING_NS_CC;
 
cocos2d::Scene* CGameLayer::createScene() {
    //cocos2d::Scene* pScene = cocos2d::Scene::create();
    //CGameLayer* pLayer = CGameLayer::create();
 
    auto pScene = Scene::create();
    auto pLayer = CGameLayer::create();
 
    pScene->addChild(pLayer);
 
    return pScene;
}
 
bool CGameLayer::init() {
    if (!Layer::init()) { return false; }
 
    // 배경 이미지 출력
    cocos2d::Sprite* pBackgroundSprite = cocos2d::Sprite::create("background.png");
    pBackgroundSprite->setPosition(cocos2d::CCPointZero);
    pBackgroundSprite->setAnchorPoint(ccp((float)0, (float)0));
    addChild(pBackgroundSprite);
 
    return true;
}
cs

위 소스는 기본적인 틀이다.

CGameLayer.cpp 파일의 24행의 background.png를 출력하는 기능만 추가하였다.

 

 

팁 - 문법이 책이랑 조금 다른데?

 참고서적이나 기타 블로그 등의 여러 소스를 보면 문법이 서로 다른 것을 알 수 있는데

구버전에서 CCSprite이던 것이 Sprite로 바뀐 것 등이다.

Ctrl+Space키를 누르면 지원되는 메소드를 볼 수 있는데

여기서 비슷한 키워드를 찾아서 사용하면 된다.

 

 

 

다음 게시물에서 이 프로젝트에서 사용할 리소스를 준비하는 과정을 다루겠다.

Posted by gharlic