cocos2d-x를 접한지도 이제 어언 1주가 다 되어가는 듯 하다.
(첫 번째 포스팅과 날짜 차이가 얼마 안나는 이유는 포스팅 차체를 늦게 한 때문이지, 9일날 처음 배운 게 아니다!)
아직 모르는 게 너무 많고, 나 또한 C++기반의 이 툴이 어색했기 때문에 포스팅을 하지 않으려 했었다.
그렇지만, 이렇게 포스팅을 하면서 꾸준히 정리해 나가다 보면 이 자체가 큰 공부가 된다는 조언을 듣고 다시 글을 쓰기로 했다.
처음 Cocos2d-x 프로젝트를 만들면 기본으로 HelloWorldScene이 생성이 되는데, 이것 저것 달려있는 주석을 제치고 보면 종료 버튼을 만들 수 있는 CCItemImage(3.0 이후는 auto) 빼고 두 가지를 찾을 수 있을 것이다.
하나는 label인데,
CCLabelTTF(3.0 이후 Label)으로 구현하는 이 클래스는 cocos2d-x에서 글씨를 나타낼 때 기본적으로 사용하는 방법이다.
구현 방법은 여느 오브젝트 생성과 같다.
CCLabelTTF* pLabel(오브젝트이름) = CCLabelTTF::create("(쓰고 싶은 글)", "(사용하고 싶은 글씨체)", "(글자 크기)");
this->addChild(pLabel);
다른 하나는 Sprite로,
게임을 만들 때 삽입되는 모든 이미지 파일(png로 읽는다)을 출력하는 기본 클래스라고 할 수 있다.
구현 방법은
CCSprite* pSprite(오브젝트이름) = CCSprite::create("HelloWorld.png(Resources 폴더에 등록되어 있는 파일명-단순히 폴더에 파일이 있다고 되는 게 아니다. 반드시 Xcode에서 그 파일을 등록해야 한다-)");
this->addChild(pSprite);
모든 오브젝트는 생성 후 addChild를 통해서 출력이 된다. cocos2d-x는 Node라는 최상위 클래스에서 계속 상속하는 것으로 구현하기 때문이다.
3.0에서 label 이나 Sprite 구현은 더 쉽다.
cocos2d에서 따온 CC들을 빼고 Label* pLabel = Label::create~ 나 Sprite* pSprite=Sprite::create~같이 표현해 줄 수도 있고, auto pLabel = Label::create~, auto pSprite = Sprite::create~ 또한 가능하다.
3.0에서 도입된 auto는 auto-release object 를 생성할 때 그 클래스 이름을 앞에 쓰는 것 대신 사용할 수 있어 편리하다.
...auto-release object 가 뭐냐고?
object가 자기 자신의 사용이 종료되었을 때 스스로 메모리를 회수하고 삭제하는 object다. C++로 작성되는 cocos2d-x이기에 메모리 관리를 잘 할 수 있도록 도와주는 역할을 한다고 볼 수 있다.
HelloWorldScene.h의 CREATE_FUNC(HelloWorld); 구문이 우리가 create 메소드를 사용해 오브젝트를 생성할 수 있게 도와주고, 또한 그로 인해 생성하는 object 가 auto release되게 한다.
(Xcode를 사용하고 있다면 커맨드+마우스 클릭키로 CREATE_FUNC을 들어가보자. 오픈 소스니까 뒤지면 어떻게든 알 수 있다.)
이외에도 Scene, Layer, Director 와 같은 여러 클래스가 많지만, 그건 차차 알아가도록 하자.
'(Backup)' 카테고리의 다른 글
cocos2d-x 전화번호부 연동 (0) | 2014.07.11 |
---|---|
Cocos2d-x 관련 도움 링크 모음 (0) | 2014.02.20 |
[Cocos2d-x] 1. Cocos2d-x의 첫 걸음. 버전 별 프로젝트 생성 (0) | 2014.01.09 |