cocos2d study #04

cocos2d 프로젝트 시작하기


1. 프로젝트를 시작하기 전 알아야 할 것


cocos2d로 프로젝트를 생성하면 여러 개의 파일을 Xcode의 Class 폴더에서 볼 수 있다.

RootViewController는 일반적으로 잘 사용하지는 않는다. (주의: 화면 모드를 세로 모드 또는, 가로 모드로 바꿀 때 수정하는 부분이 있으므로 기억은 해 놓아야 한다)

주로 사용하는 것은 프로젝트명Layer.m 또는 프로젝트명Scene.m이다. (cocos2d의 버전에 따라 파일명의 layer, scene 같은 접미사 부분이 다를 수 있다)

프로젝트명AppDelegate.m 파일은 필요에 따라 약간의 수정을 할 수 있다.

2. 프로젝트의 각 파일에 대하여

(1) ProjectNameAppDelegate.m 파일


예제로 만든 HelloWorld 프로젝트의 HelloWorldAppDelegate.m 파일


AppDelegate.m 파일은 거의 고칠 부분이 없다.

수정을 하더라도 아래의 두 줄 정도가 보통이다.

[director setAnimationInterval:1.0/60]; // FPS를 결정한다.
[director setDisplayFPS:YES]; // FPS를 표시한다.


fps는 초당 프레임으로 1초에 몇 프레임의 장면을 표시할 것인지를 뜻한다. 인간의 눈은 최소 30 프레임 이상이 되어야 끊기지 않는다고 느낀다. 그리고 60 프레임 이상이 되면 움직임이 부드럽다고 느끼게 된다. 기본적으로 60으로 설정되어 있고, setAnimationInterval 수치를 변경하면 원하는 fps로 맞출 수 있지만 일반적으로 60이상의 프레임이 권장 사항이므로 수정할 일은 거의 없다.


가장 중요한 부분은 아래의 코드이다.

[[CCDirector sharedDirector] runWithScene: [HelloWorldLayer scene]];


CCDirector는 싱글톤 객체이다.

runWithScene 메시지를 보내 어디서든 어떤 장면(Scene)이든 호출할 수 있다.

여기서는 HelloWorld Scene을 호출한다.

(2) HelloWorld Scene


예제로 생성한 HelloWorldLayer.h


HelloWorldLayer.h 파일에서 기억할 것은 다음의 내용이다.

HelloWorldLayer는 CCLayer를 상속받았다. 그리고 HelloWorld 자체가 레이어(CCLayer)이다.



예제로 생성한 HelloWorldLayer.m


HelloWorldLayer.m 파일에서 기억해야 할 것은 크게 2가지인데, 바로 scene과 init 메소드이다.

scene에서는 아래 내용을 알아두면 좋다. (하지만 cocos2d가 미리 만들어 놓았기 때문에 실제로 수정할 일은 거의 없음) 

1. 먼저, CCScene으로 장면(scene)을 생성한다.

2. 다음으로는 HelloWorld로 레이어(layer)를 생성한다.

3. 그 후 scene에 layer를 추가(addChild)한다.

4. 마지막으로 scene을 return하게 되는데, 이것을 받는 것이 바로 AppDelegate의 [HelloWorldLayer scene]이다.

즉, CCDirector가 runWithScene으로 HelloWorld라는 scene을 호출한 것이다.


init에서는 HelloWorld의 주요 작업을 하게 된다. (필요하다면 스케줄링이라든가, 애니메이션 같은 작업을 메소드로 만들어 쓰면 된다.)

예제로 만든 HelloWorld에는 cocos2d가 자동으로 만들어 넣은 label이 들어가 있는데, init에서 이 작업을 하고 있다.



PS

이 전의 튜토리얼에서도 참고할 내용은 있었지만, 더 이상의 진행을 할 수 없어 스터디를 새롭게 시작한다.

'개발 > Cocos2d' 카테고리의 다른 글

cocos2d study #06  (0) 2012.10.23
cocos2d study #05  (0) 2012.10.23
cocos2d study #03  (0) 2012.10.22
cocos2d study #02  (0) 2012.10.22
cocos2d study #01  (0) 2012.10.22

+ Recent posts