[Basic Concepts] Director, Scene, Layer, Sprite 개념 정리

|

Director Scene Layer and Sprite

Scenes

Cocos2d-x에서 씬은 하나의 게임을 그 기능과 성격에 따라 여러 부분으로 나눌 때 사용하는 개념이다. 어떤 개발자들은 씬을 스크린이나 스테이지라고도 부르는데 모두 같은 개념이다. 

씬은 게임의 흐름으로부터 매우 독립적이다. 보통 여러 개의 씬이 모여 하나의 게임을 이루는데 한순간에 하나의 씬만 활성화된다. 각각의 씬은 서로 연결될 수 있기는 하지만 독립된 프로그램으로 생각해도 무방하다.

예들 들어, 만들어진 하나의 게임은 인트로(Intro), 메뉴(Menu), 레벨(Level) 1, 컷씬(Cutscene) 1, 레벨(Level) 2, 승리 결과 화면(Winning cutscene), 패배 결과 화면(Losing cutscene), 랭킹(High score) 등의 씬을 갖게 된다. 

좀더 자세히 설명하면, 게임이 시작되고 인트로 씬이 끝나면 메뉴 씬으로 이동한다. 다음으로 레벨 1 씬으로 전환된 뒤 컷씬이 종료되면, 사용자의 승패 여부에 따라 승리 또는 패배 결과 화면으로 씬이 전환된다. 

cocos2d CCScene 은 하나이상의 CCNode로 구성되며 Scene의 자식으로 더해집니다.

CCLayer 및 CCSprite(CCNode를 상속받는)는 모양과 동작을 Scene에 더해준다. 

일반적으로, CCLayer와 CCScene의 빈 인스턴스로 너의 Scene은 구성됩니다.

CCNodes로 다른 그래픽과 게임 객체를 구현하고 사용자가 만든 CCLayer에 자식으로 추가합니다.

Scene는 CCNode의 하위 클래스이므로, 이들은 수동 또는 CCActions을 사용하여 변환 될 수있다. 자세한 내용은 작업을 참조하십시오.

CCTransitionScene 클래스로 구현 전환이라고 CCScene 클래스의 가족이 있습니다. 그래서, 예를 들어 퇴색 측면에서의 슬라이딩, 그리고 - 다른 하나의 장면에서 전환 할 때 이러한 특수 전환 효과를 만들 수 있습니다.


Director

CCDirector는 싱글톤 패턴이며 활성화된 Scene를 알고있으며 현재 Scene를 교체할수있으며, 스택방식으로 push 및 pop으로 Scene를 관리할수있습니다.
그럴 경우 CCDirector은 이전 Scene를 일시중지하지만 메모리에 유지시킵니다. 만약 나중에 너가 맨위 Scene를 pop하면 일시중지된 Scene로 다시 시작합니다.

CCDirector는 OpenGL을 ES를 초기화 할 책임이 있습니다.


Layers

CCLayer가 터치 이벤트를 처리할수있는 CCNode입니다. CCLayer 자체를 그리는 방법을 아는 플레이어가 그들 뒤에 다른 레이어를 볼 수 있도록 반투명 수 있습니다. CCLayers은 게임의 모양과 동작을 정의하는 데 매우 유용합니다, 그래서 당신은 당신이 필요로 할 CCLayer의 서브 클래스를 코딩 프로그래밍 많은 시간을 소비 할 것으로 예상해야한다.

TCCLayer는 터치 이벤트 핸들러를 정의하는 곳이다.터치 이벤트 (ccTouchBegan, ccTouchMoved, ccTouchEnded 또는 ccTouchCancelled) 중 하나를 처리하는 방법을 구현함으로써 CCLayer는 플레이어의 상호 작용에 반응 할 수있다. 일부 Layer은 이벤트를 포착하고 그것을 받아 들일 때까지 이러한 터치 이벤트는, 앞에서 뒤로, 장면 내의 모든 계층에 전파됩니다.

복잡한 응용 프로그램을 사용자 정의 CCLayer 서브 클래스를 정의 할 필요가 동안,적인 Cocos2D는 미리 정의 된 여러 레이어를 제공합니다. 몇 가지 예는 CCMenu (간단한 메뉴 Layer), CCColorLayer (색깔을 그릴수 있는 Layer), 그리고 CCLayerMultiplex (CCLayer를 하나만 쓰고 싶을때) 등이 있습니다.

레이어 CCSprites, CCLabels, 심지어 다른 CCLayer 개체를 포함하여, 아이로 어떤 CCNode를 포함 할 수 있습니다. 층 CCNode의 하위 클래스이므로, 이들은 수동 또는 CCActions을 사용하여 변환 될 수있다. 자세한 내용은 작업을 참조하십시오.

Multiple Layers Example:

 1    CCLayerGradient* layer1 = CCLayerGradient::create(ccc4(255, 0, 0, 255), ccc4(255, 0, 255, 255));
 2    layer1->setContentSize(CCSizeMake(80, 80));
 3    layer1->setPosition(ccp(50,50));
 4    addChild(layer1);
 5
 6    CCLayerGradient* layer2 = CCLayerGradient::create(ccc4(0, 0, 0, 127), ccc4(255, 255, 255, 127));
 7    layer2->setContentSize(CCSizeMake(80, 80));
 8    layer2->setPosition(ccp(100,90));
 9    addChild(layer2);
10
11    CCLayerGradient* layer3 = CCLayerGradient::create();
12    layer3->setContentSize(CCSizeMake(80, 80));
13    layer3->setPosition(ccp(150,140));
14    layer3->setStartColor(ccc3(255, 0, 0));
15    layer3->setEndColor(ccc3(255, 0, 255));
16    layer3->setStartOpacity(255);
17    layer3->setEndOpacity(255);
18    ccBlendFunc blend;
19    blend.src = GL_SRC_ALPHA;
20    blend.dst = GL_ONE_MINUS_SRC_ALPHA;
21    layer3->setBlendFunc(blend);
22    addChild(layer3);

Sprites

Cocos2D의 CCSprite는 다른 게임 엔진에서 찾을 스프라이트 유사합니다. 그것은, 회전, 이동 조정, 애니메이션 및 기타 변환을받을 수있는 2D 이미지입니다. (CCSprite 클래스를 사용하여 구현) 스프라이트는 어린이와 같은 다른 스프라이트를 할 수 있습니다. 부모가 변형 될 때, 모든 아이들은 물론 변환됩니다. 스프라이트 CCNode의 하위 클래스이므로, 이들은 수동 또는 CCActions을 사용하여 변환 될 수있다. 자세한 내용은 작업을 참조하십시오.

Trackback 0 And Comment 0
prev | 1 | 2 | 3 | 4 | 5 | 6 | 7 | next