아이폰 Cocos2d에 오신것을 환영합니다!

아이폰 Cocos2d는 아이폰, 아이폰 터치, 아이패드에서 게임을 만들기위한 Cocoa 기반의 라이브러리 입니다.  이 문서는 가능한 이전의 지식이 거의 없는것으로 가정하며 cocos2d를 설치하고 시작하는 법을 알려드립니다.

0. 애플 개발 툴 및 아이폰 SDK 설치

애플에서 제공하는 iPhone Software Development Kit (SDK)가 없다면 먼저 먼저 아이폰 개발 센터에서 다운받아야합니다. 이 SDK는 프로그램을 작성하고 컴파일할 애플의 통합 개발 환경(IDE)인 Xcode를 포함합니다. 또한 코드 라이브러리, 문서와 일반적인 아이폰 개발에 필요한것들을 포함합니다. 

SDK를 다운로드 하기 위해 애플 개발자 프로그램을 가입해야합니다.(앱을 앱스토어에 올리기위해서 나중에는 99달러짜리 멤버쉽으로 업그레이드 해야합니다.)  

(이이팟 터치 및 아이패드를 생각하고 있더라도 "아이폰 개발자"텀을 사용하는게 일반적입니다. 3가지 모두 아이폰 OS를 사용하며 개발자 관점에서는 매우 비슷합니다.) 

아이폰 SDK는 용량이크고 설치 시간이 오래걸리므로 이번스텝은 가능한 빨리 시작하고 끝나기를 기다리는 동안 다른한것을 찾아보록 합니다.

1. 다운로드 소스파일

다운로드 페이지에서 안정버전을 받습니다. 파인더에서 더블클릭해 압축을 풀면 아래와 같은 파일 들이 나타납니다.
 

이게 먼 파일인지? 대부분 순수 텍스트 파일입니다만 파인더는 인식하지 못합니다. 왜냐면 일반적인 확장자가 아니기 때문이죠. AUTHORS, CHANGELOG, LICENSE.box2d같은 대문자 파일들은 즐겨쓰는 텍스트 에디터에다가 드래그 가능합니다. 

특히 각종 파일들이 무엇인지 정의하고있고 시작하기위한 약간의 팁을 포함하는 README 파일은 읽어보도록합니다.

2. 시험 실행

아마도 README에서 언급되지 않은 대부분의 중요한 파일은이 Xcode(cocos2d-iphone.xcodeproj) 프로젝트에 있을것입니다. Xcode에서 열어봅니다.

이 거대한 프로젝트는 많은 양의 간단한 테스트/데모 프로젝트와 같은 cocos2d를 위한 모든 소스를 포함하고 있습니다.  이것들을 실행해보는것이 cocos2d의 능력을 탐구할 수 있는 좋은 방법입니다. 또한 이 소스를 읽어보는것이 cocos2d전문가들이 만든것을 배울 수 있는 좋은 방법입니다.

테스트 실행을 위해 "Active Target"과 "Active Executable"을 세팅해야합니다. 이것을 세팅하기 위한 두가지 방법이 있습니다. 첫번째는 프로젝트 메뉴 하위 메뉴를 사용하는 방법입니다. 두번째 방법은 메인 툴바안의 옵션을 눌르는 것입니다. 뷰 메뉴 아래 "Customize Toolbar"를 누르고  "Active Target”과 “Active Executable” 아이템을 윈도의 상위에 있는 툴바안으로 드래그 합니다. 그리고 나서 Taget과 Executable을 선택할 수 있습니다. 

어느 방법이던 실행은 원하는 (ex “SpriteTest” 또는 “ParticleTest”)Active Target을 선택하여 시작합니다. 자동으로 알맞은 Active Executable 변경하는것을 찾아야합니다. 하지만 어떤이유로 그렇게 하는거이 실패해다면 수동으로 해당하는 Active Executable을 선택합니다.

그 다음   “Build and Run” (or “Build and Debug”)를 클릭합니다. 프로젝트가 컴파일되고 아이폰/아이패드 시뮬레이터가 켜지면서 데모가 실행될것입니다. 에러가 나오는 경우 Projects→ Edit Project Settings → Build로 가서  C/C+ 컴파일러 버전이 LLVM GCC 4.2나 다른것이 아닌  “GCC 4.2”인지를 확인합니다.

시작해야합니다. 윈도우의 왼쪽 “Groups & Files” 패널 안의 "tests" 폴더 안에서 자신의 앱을 만들때 사용해야할 비슷한 모든 테스트 코드들을 찾아보세요. 파일 이름은 일반적으로 타겟이름과 연관됩니다. 예를들어 ParticleTest를 위한 소스코드는 ParticleTest.h(헤더 파일)과 articleTest.m(소스파일,대부분의 중요한 것들이 들어있음)안에 있습니다. 

Xcode debugging techniques 를 배우기 위한 요점을 원할것입니다. 그래서 변수를 살펴보고 코드를 실행하면서 컴퓨터 로그 값을 가지고 코드에서 특정 지점에서 프로그램을 멈추는 방법을 알것입니다. 이 모든것들이 모두 새로운것들입니다만 지금 너무 걱정하지는 마세요. 단지 이것들이 모두 가능하고 준비가되었을때 링크를 방문하는것만 기억하세요.

3. 프로젝트 템플릿 설치

Cocos2d를 사용하기위해서 인스톨해야만 하는건 실제 아무것도 없습니다. 그건 소스 라이브러리입니다. 적절한 소스를 적당히 설정된 프로젝트 안에 포함시키면 잘 돌아갈 것입니다.

하지만 이런 설정을 좀더 쉽게 만들기 위해서 cocos2d v0.99는  Xcode 프로젝트 템플릿이 들어있습니다. 이 템플릿은 부가적인 컴포넌트들과 함께 cocos2d를 위한 프로젝트를 쉽게 만들게 해줍니다.

  • a cocos2d stand alone template
  • a cocos2d + box2d template
  • a cocos2d + chipmunk template

템플릿을 인스톨하기 위해 터미널 어플리케이션을 실행해 다음과 같이 입력합니다. : 

cd cocos2d-iphone
./install-templates.sh -u

(하지만 처번째 라인의 "cocos2d-iphone"은 실제 아이폰 폴더의 cocos2d가 있는 경로로 대체합니다.  경로를 쉽게 입력할 수 있는 방법은 "cd"를 입력한 후 파인더에서 폴더를 터미널 윈도우로 드래그하면 됩니다.) 

0.99.2에서는 카피하려는 디렉토리에 이미 템플릿이 있다면 설치 스크립트는 카피동작은 넘어갑니다.  아래와같이 강제로 설치 할 수도 있습니다.

./install-templates.sh -f -u

4. Create a new project

템플릿을 설치한 후 Xcode에서 새 프로젝트를 시작할 수 있습니다. 

  1. Xcode실행
  2. File → New Project
  3. cocos2d 템플릿 선택

이때 프로젝트를 실행 할수 있고(실행해야 하고!) 아이폰 시뮬레이터에 간단히 "Hello World"가 나타나는것을 볼 수 있습니다.   

Next Steps

여러분은 지금 가야할 길을 잘 가고있습니다! 이미 완료한것을 확인해보면 감사하겠습니다.

  • Xcode와 iPhone SDK 설치됨
  • cocos2d-iPhone 라이브러리 다운로드 및 압축 풀었음
  • cocos2d 테스트 실행 및 소스코드 시행 
  • 새 프로젝트 템플릿 설치죔
  • 첫번째 “Hello World” 프로젝트 생성 및 실행

굉장히 많이 진행되었네요! 이젠 cocos2d어떻게 동작하는지 그리고 진짜 데모와 게임을 만드는것에 필요한것을 배울 준비가 되었습니다.

cocos2d API가 어떻게 동작하는지의 큰 그림을 제공하고 대부분의 중요한 용어의 뜻이 무없인지지 알 수 있는 basic concepts 페이지를 주의깊게 읽어봅니다. 그 후에  Lesson 2. Your First Game에서 단계적으로 튜토리어를 진행합니다.

Posted by DevMaster

Effects

소개

Effects는 특별한 종류의 action이다. opacitypositionrotation,  scale 같은 일반적인 프로퍼티를 변경하는 대신 새로운 프로퍼티(gridproperty)를 변경한다.

그리드 프로퍼티는 행렬과 같다. 여러개의 정사각형 또는 직사각형  형태를 서로 교차하는 선들의 네트웍이다.

이 특별한 action은 그리드로 어떤 CCNode object(CCLayerCCSceneCCSprite, 등)도 렌더링하며 그리드의 꼭지점을 움직여 그리드를 변형할 수 있다.

다음 2종류의 그리가 있다 : tiled 그리도 와 non-tiled 그리드. 차이점은 tiled 그리드는 개별 타일의 집합이며 non-tiled 그리드는 꼭지점의 집합이다.

* 그리드가 2차원(행, 열)이라도 각각의 꼭지점은 3차원이다(x,y,z) 

그리드는 2차원이다 : 행과 열 하지만 각 꼭지점은 3차원이다 : x,y,z. 그리고 tiled-grid-3D의 변형을 통해 2d 또는 3d를 만들 수 있다. 

그리드의 크기를 늘리면 효과의 질은 높아진다. 하지만 효과의 시간은 줄어든다.
 
그리드의 크기(16,12)는 대부분의 단말기에서 빠르게 동작한다. 하지만 별로 좋아보이지 않는다. 그리드(32,24)는 매우 좋지만 1세대 아이폰에서는 빨리동작하지 않는다. 

How they work

각각의 화면 프레임은 텍스처(FBO)로 렌더링 된다. 이 텍스처는 꼭지점 배열로 바뀌고 이 꼭지점 배열(grid)는 그리드 효과에 의해 변형된다. 마지막으로 꼭지점 배열은 화면에 렌더링된다. 

내부에 관한 더 자세한 정보는 다음을 참조:

예를 들어 다음 이미지를 렌더링한 scene이나 layer가 있다면

...CCRipple3D action을 사용하여 이 이미지를 변형할 수 있다. 와이어 이미지가 보여주는 바와같이 32x24정사각형의 그리드를 사용였고 이 그리드는 non-tiled이다(모든 사각형은 연결되어있다).

 

...또한 CCFadeOutTRTiles action을 사용하여 변형할 수 있다. 다음 와이어 이미지에 보이는것처럼 이 그리드는 16x12 사각형을 사용하였고 이 그리드는 tiled이다(모든 사각형/타일은 분리되어있다).

 

3D actions

이름에 '3D'접미사가 분은 action은 그리드의 z좌표를 수정하여 3D 비주얼 효과를 제공한다.

만일 어떠한  '3D' action을 사용한다면 아마도 깊이 버퍼를 사용하길 원할것이다. 간단한 호출을 통해 그렇게 할 수 있다. 

// IMPORTANT: Call this function at the very beginning, before running your 1st scene// Create a depth buffer of 24 bits// These means that openGL z-order will be taken into account[[CCDirector sharedDirector] setDepthBufferFormat:kDepthBuffer16];

그리고  어떤상황에서는 RGBA8888 픽셀 포멧을 사용해야 되는 경우가 있다. 이는 투명효과를 가지게 해준다. 

// IMPORTANT: Call this function at the very beginning, before running your 1st scene// Use this pixel format to have transparent buffers[[CCDirector sharedDirector] setPixelFormat:kPixelFormatRGBA8888];

Index of grid effects

Available CCGrid3DAction actions:

Available CCTiledGrid3DAction actions:

  • CCFadeOutBLTiles
  • CCFadeOutTRTiles
  • CCFadeOutUpTiles
  • CCFadeOutDownTiles
  • CCShakyTiles3D
  • CCShatteredTiles3D
  • CCShuffleTiles
  • CCSplitCols
  • CCSplitRows
  • CCTurnOffTiles
  • CCWavesTiles3D

Examples

Some examples:

// execute a Waves action on sprite 1id waves = [CCWaves actionWithWaves:5 amplitude:20 horizontal:YES vertical:NO grid:ccg(15,10) duration:5];[sprite1 runAction: [CCRepeatForever actionWithAction: waves]]// and execute a Shaky3D action on sprite 2id shaky = [CCShaky3D actionWithRange:4 shakeZ:NO grid:ccg(15,10) duration:5];[sprite2 runAction: [CCRepeatForever actionWithAction: shaky]];
prog_guide/effects.txt · Last modified: 2010/03/24 21:40 by probablycorey
Posted by DevMaster

Actions: Ease


정해진 시간동안 가속도를 변화를 줄수있어 sprite움직임을 단순하지 않고 다양하게 변화시킬 수 있다. Ease Action은 시작시, 끝날때, 시작과끝 에서 변화하는 각각의 3가지 타입이 있다.

  • In actions: 시작부분에서 가속
  • Out actions: 끝부분에서 가속
  • InOut actions: 시작과 끝부분에서 가속

Ease actions

  • CCEaseIn: 시작부분 가속이 있은 후 감속된다.
  • CCEaseOut: 끝부분에서 가속된다.
  • CCEaseInOut: 시작 시 가속되다가 다시 느려졌다가 끝날때 또 가속된다.

rate인자는 가속도를 나타낸다. 

EaseExponential actions

기본 액션값에 비해 느리다가 빨라지는 체감속도가 훨씬 크다.

EaseSine actions

기본값에 비해서 느리다가 빨라지는 체감속도가 덜하다.

EaseElastic actions

고무줄 팅기는 효과를 준다.
Sequence나 Spawn과 같은 action과 같이 쓰면 엉뚱한 값이 나올수 있다.

EaseBounce actions

바닥에 튕기는 효과를 준다.
Sequence나 Spawn과 같은 action과 같이 쓰면 엉뚱한 값이 나올수 있다. 

EaseBack actions

목표지점보다 더 갔다가 다시 복귀하는 효과를 준다. Elastic에서 period를 1값으로 준거랑 비슷한 효과가 나는것같다. 
Sequence나 Spawn과 같은 action과 같이 쓰면 엉뚱한 값이 나올수 있다.

Actions: Speed

Speed action

CCSpeed action은 내부 action의 기간을 바꾼다..는 중요하지 않고.
[
action setSpeed: 2.5f];
요딴식으로 나중에 스피드값을 바꿀려고 사용하는 action
 

 

Posted by DevMaster

Actions: Ease

Ease action은 내부 action의 시간을 바구는 특별한 구성 action이다. Flash에서는 Tweening 또는 Easingaction 이라고른다.  

이 Action들은 내부 action의 속도를 수정하지만 전체 시간은 바뀌지 않는다. 예를들어 내부적으로 5초간 행동하면 전체 5초동안 진행된다.

Ease actions 시간을 선형적으로 바꾼다.

예를들어 이 Action들은 내부 action을 가속하거나 감속한다.  

이 Action은 3가지 타입으로 나뉜다. 

  • In actions: 시작부분에서 가속
  • Out actions: 끝부분에서 가속
  • InOut actions: 시작과 끝부분에서 가속

easing와 tweening action에 대해 더 자세한 정보를 얻고싶다면 다음페이지를 살펴보자.

Ease actions

다음 공식을 사용하여 내부 action을 가속한다 :

-(void) update:(ccTime) t
{
   [inner update: powf(t,rate)];
}

변이:

  • CCEaseIn: 시작부분 가속
  • CCEaseOut: 끝부분 가속
  • CCEaseInOut: 시작과 끝부분 가속

rate인자는 가속도를 나타낸다. 

예제:

// 시작 부분 가속
id action = [CCMoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [CCEaseIn actionWithAction:action rate:2];
[sprite runAction: ease];
 
// 끝부분 가속
id action = [CCMoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [CCEaseOut actionWithAction:action rate:2];
[sprite runAction: ease];
 
// 시작과 끝부분 가속
id action = [CCMoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [CCEaseInOut actionWithAction:action rate:2];
[sprite runAction: ease];

EaseExponential actions

지수 action:

  • CCEaseExponentialIn
  • CCEaseExponentialOut
  • CCEaseExponentialInOut

예제:

id scaleAction = [CCScaleTo actionWithDuration:2.5 scale:.8];
id easeAction = [CCEaseExponentialIn actionWithAction:scaleAction];
[label runAction: easeAction];

FIXME

EaseSine actions

사인 actions :

  • CCEaseSineIn
  • CCEaseSineOut
  • CCEaseSineInOut

예제:

// 시작부분 사인
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseSineIn actionWithAction:move];
[sprite runAction:action];
 
// 끝부분 사인
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseSineOut actionWithAction:move];
[sprite runAction:action];
 
// 시작과 끝부분 사인
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseSineInOut actionWithAction:move];
[sprite runAction:action];

EaseElastic actions

이 action은 고무줄같은 시간 시뮬레이션으로 바꾼다. 고무줄 action 1보다 크고 0보다 작은 시간값을 사용하므로 내부 actions은 이 특이값을 다룰수 있는 준비가 되어있어야한다. 

어떤 시간 값은 한번 이상(이 함수는 전단사-1:1대응 함수가 아니다) 동작되므로 내부 action은 이값을 다룰준비가 되어있어야한다. CCMoveByCCScaleByCCRotateBy 같은 간단한 actions은 EaseElastic action 들과 잘 동작하지만 CCSequence 또는CCSpawn action 은 예상치 못한 결과가 나올 수 있다.  

Elastic action:

  • CCEaseElasticIn
  • CCEaseElasticOut
  • CCEaseElasticInOut

예제:

// 'period' is how elastic is the action.
// recommended values: between 0.3 and 0.45
 
// Elastic at the beginning
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseElasticIn actionWithAction:move period:0.3f];
[sprite runAction: action];
 
// Elastic at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseElasticOut actionWithAction:move period:0.3f];
[sprite runAction: action];
 
// Elastic at the beginning and at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseElasticInOut actionWithAction:move period:0.3f];
[sprite runAction: action];

EaseBounce actions

EaseBounce action은 바운딩(바닥에 팅기는)효과를 시뮬레이션한다.

어떤 시간 값은 한번 이상(이 함수는 전단사-1:1대응 함수가 아니다) 동작되므로 내부 action은 이값을 다룰준비가 되어있어야한다. CCMoveByCCScaleByCCRotateBy 같은 간단한 actions은 EaseBounce action 들과 잘 동작하지만 CCSequence 또는CCSpawn action 은 예상치 못한 결과가 나올 수 있다.   

Available bounce actions:

  • CCEaseBounceIn
  • CCEaseBounceOut
  • CCEaseBounceInOut

Examples:

// 시작부분 튕김
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBounceIn actionWithAction:move];
[sprite runAction: action];
 
// 끝부분이 튕김
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBounceOut actionWithAction:move];
[sprite runAction: action];
 
// 시작과 끝부분이 튕김
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBounceInOut actionWithAction:move];
[sprite runAction: action];

EaseBack actions

어떤 시간 값은 한번 이상(이 함수는 전단사-1:1대응 함수가 아니다) 동작되므로 내부 action은 이값을 다룰준비가 되어있어야한다. CCMoveByCCScaleByCCRotateBy 같은 간단한 actions은 EaseBack action 들과 잘 동작하지만 CCSequence 또는CCSpawn action 은 예상치 못한 결과가 나올 수 있다.    

Back action:

  • CCEaseBackIn
  • CCEaseBackOut
  • CCEaseBackInOut

Examples:

// Back at the beginning
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBackIn actionWithAction:move];
[sprite runAction: action];
 
// Back at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBackOut actionWithAction:move];
[sprite runAction: action];
 
// Back at the beginning and at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBackInOut actionWithAction:move];
[sprite runAction: action];

Actions: Speed

Speed action

CCSpeed action은 내부 action의 기간을 바꾼다.

id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCSpeed actionWithAction: move speed:1.0f];   // no speed modification
 
// but you can modify the speed later
[action setSpeed: 2.5f]; // speed is 2.5 faster
 
[action setSpeed: 0.5f]; // speed is 0.5 faster (it means 2 times slower)
prog_guide/actions_ease.txt · Last modified: 2011/03/27 11:10 by pragmatic
Posted by DevMaster

CCSequence
Action리스트를 받아 순서대로 실행한다. 

 

icon = [CCSprite spriteWithFile:@"Icon-Small.png"];  

icon.position = ccp(50,200);

[self addChild:icon];

id action1 = [CCMoveTo actionWithDuration:2 position:ccp(100,100)];

id action2 = [CCMoveBy actionWithDuration:2  position: ccp(100,120)];

id action3 = [CCMoveBy actionWithDuration:2  position: ccp(0,120)];

action3 = [CCEaseInOut actionWithAction:[[action3 copy] autorelease] rate:5.0f];

[icon runAction: [CCSequence actions:action1, action2, action3, nil]];

 


CCSpawn 
여러 Actions을 동시에 실행한다. 


 

id action = [CCSpawn actions:

[CCRotateBy actionWithDuration2 angle720],
nil


[sprite runAction: action];

 

CCRepeat
times 인자의 숫자만큼 반복한다.

CCRepeatForever
무한 반복 액션
* CCSequence 액션 안에 CCRepeatForever 액션을 넣을 수는 없다.  





Posted by DevMaster

2011. 3. 29. 02:10 cocos2d

cocos2d : Basic Actions

아래와 같은 Actions를 사용하여 Sprite의 상태변화 또는 애니메이션 효과를 구현할 수 있다.
Action이름에 To가 붙은것은 상태변화의 최종값을 인자로 받는것이고 By가 붙은 것은 해당값만큼 변화시키것을 나타낸다. 

현재 position이 10,10 인경우 CCMoveTo 에 position 30,30 을 주면 30,30값으로 이동되는것이고
CCMoveBy 30,30값을 주면 최종 위치는 40,40이된다.

거의 모든 Actions는 reverse 메소드를 가지고 있으면 이는 반대 행동값을 나타낸다. 

    position
        CCMoveBy  CCMoveTo
        CCJumpBy  CCJumpTo
        CCBezierBy  CCBezierTo
        CCPlace
    scale
        CCScaleBy  CCScaleTo
    rotation
        CCRotateBy  CCRotateTo
    visible
        CCShow
        CCHide
        CCBlink
        CCToggleVisibility
    opacity
        CCFadeIn
        CCFadeOut
        CCFadeTo (reverse 없음)
    r, g, b
        CCTintBy  CCTintTo (reverse 없음)
[CCJumpTo 
actionWithDuration:1   //duration 시간간격 
position:location  //position 최종위치
height:100 //height 점프 높이 
jumps:2];
  //jumps 점프회수 (회수가 3번이던 4번이던 최종위치는 position임)

CCBezierTo

ccBezierConfig r;

r.endPosition = location;      //최정 지점

r.controlPoint_1 = ccp(200,100);  //베지어 포인트1

r.controlPoint_2 = ccp(300,10);   //베지어 포인트2

id move = [CCBezierTo actionWithDuration:1 bezier: r];

http://www.moshplant.com/direct-or/bezier/curve01.gif  

CCScaleTo
id move = [CCScaleTo actionWithDuration:2 scale:3.0f];
scale값으로 변화한다.(만일 이미 scale이 4.0이었다면 3.0으로 축소되는것임,현재 크기에서 항상 scale값만큼 확대되기를 원하면 CCScaleBy를 써야함)  
 


CCRotateTo

id move = [CCRotateTo actionWithDuration:2 angle:90.0f];
angle값만큼 기울인값으로 변화함 마찬가지로 현재 각도에서 추가로 angle값만큼 기울이기 위해서는 CCRotateBy를 쓰면됨.
angle값은 degree임(radian이 아님) 

CCShow
id move = [CCShow action]; 
즉시 보여짐 (duration 값 없음. 서서히 보여주고 싶은때는 CCFadeIn을 사용해야함)

CCHide

id move = [CCHide action];
즉시 사라짐 (duration 값 없음. 서서히 사라지게 하고 싶은때는 CCFadeOut을 사용해야함)

CCBlink

id move = [CCBlink actionWithDuration:4 blinks: 1];

blinks회수만큼 나타났다가 사라짐 
1일경우 사라짐 - 나타남 - 사라짐
2일경우 사라짐 - 나타남 - 사라짐 - 나타남 - 사라짐 

CCToggleVisibility 

id move = [CCToggleVisibility action];

Show상태일때는 Hide로 바꾸고 Hide상태일때는 Show로 바꿈. 즉시 변함  
 

CCFadeTo
id move = [CCFadeTo actionWithDuration:2 opacity:0x9d];
opacity값만큼 투명도를 조정함. opacity는 GLubyte 값이며 0x00 에서 0xFF사이의 값임

CCTintTo
id move = [CCTintTo actionWithDuration:2 red:0xFF  green:0xAA blue:0xAA]; 
 
색농도를 바꿈 








 

Posted by DevMaster

id move = [CCMoveTo actionWithDuration:1 position:location];

id accel = [CCEaseIn actionWithAction:[[move copy] autorelease] rate:5.0f];

[greenApple runAction: accel];

//CCEaseIn : 점점 빠르게

//CCEaseOut : 점점 느리게

//CCEaseInOut : 빨랐다가 느리게

//CCSpeed : 해당 속도값대로 


CCSpeed인 경우 인자가 rate가 아니고 speed이다.. 주의!!!
id accel = [CCSpeed actionWithAction:[[move copy] autorelease] speed:5.0f]; 

 

Posted by DevMaster

2011. 3. 28. 02:56 cocos2d

cocos2d : Menu

1. init 에 넣어준다.

CCMenuItemImage *menuItem1 = [CCMenuItemImage itemFromNormalImage:@"menu1.png"

selectedImage: @"menu1_s.png"

target:self

selector:@selector(menu1Click:)];


CCMenuItemImage *menuItem2 = [CCMenuItemImage itemFromNormalImage:@"menu2.png"

selectedImage: @"menu2_s.png"

target:self

selector:@selector(menu2Click:)];

CCMenu * myMenu = [CCMenu menuWithItems:menuItem1,menuItem2,nil];

[myMenu alignItemsVertically];

[self addChild:myMenu];

2. click시 이벤트 메소트 

- (void) menu1Click: (CCMenuItem  *) menuItem ; 

Posted by DevMaster
1. 그냥 이동

[[CCDirector sharedDirector] replaceScene: [SomeOtherScene scene]];


2. 이동하면서 효과주기

[[
CCDirector sharedDirector] replaceScene:

[CCTransitionFade transitionWithDuration:0.5f scene:[MainScene scene]]]; 

    효과 종류 
    CCTransitionFade : Fade in & Fade out

    CCTransitionFlipAngular : 종이를 뒤집듯이 180도 회전 하면서 앵글이 아래로 갔다가 돌아옴.

    CCTransitionShrinkGrow : 기존 씬이 멀어지면서 새로운 씬이 가까워짐

    CCTransitionMoveInB : 아래에서 새 씬이 올라오고 기존씬이 사라짐

    CCTransitionMoveInT : 위에서 새 씬이 내래오고 기존씬이 사라짐

    CCTransitionMoveInL : 왼쪽에서

    CCTransitionMoveInR : 오른쪽에서 

    CCTransitionFadeTR : 

    CCTransitionFadeUp

    CCTransitionFlipX : 종이를 뒤집듯이 왼쪽에서 오른쪽으로 180도 회전

    CCTransitionFlipY : 종이를 뒤집듯이 위에서 아래로 180도 회전

    CCTransitionPageTurn : 책 페이지를 넘기듯이

    CCTransitionCrossFade : 새 씬이 일단 겹쳐지고 기존씬이 천천히 사라짐


Posted by DevMaster


1. 헤더 등록

#import "CCTouchDispatcher.h"
 

2. 델리게이트 등록

- (void) registerWithTouchDispatcher {

[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];

}


3. 터치 구현

- (BOOL) ccTouchBegan:(UITouch *) touch withEvent:(UIEvent *) event {

return YES;

}


- (void) ccTouchEnded:(UITouch *) touch withEvent:(UIEvent *) event {

}



Posted by DevMaster
이전버튼 1 이전버튼

블로그 이미지
DevMaster

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.4
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함