2011. 3. 31. 00:28 cocos2d
'2011/03'에 해당되는 글 8건
- 2011.03.31 cocos2d : Actions : Ease (요점 정리) 1
- 2011.03.30 cocos2d : Actions : Ease (번역)
- 2011.03.30 cocos2d : Actions : Composition
- 2011.03.29 cocos2d : Basic Actions 1
- 2011.03.29 cocos2d : 이동시 가속도(1)
- 2011.03.28 cocos2d : Menu
- 2011.03.27 cocos2d : Scene 이동 및 효과 1
- 2011.03.27 cocos2d : Layer 터치 이벤트 처리
2011. 3. 30. 23:22 cocos2d 메뉴얼(번역)
cocos2d : Actions : Ease (번역)
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];
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은 이값을 다룰준비가 되어있어야한다. CCMoveBy, CCScaleBy, CCRotateBy 같은 간단한 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은 이값을 다룰준비가 되어있어야한다. CCMoveBy, CCScaleBy, CCRotateBy 같은 간단한 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은 이값을 다룰준비가 되어있어야한다. CCMoveBy, CCScaleBy, CCRotateBy 같은 간단한 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)
2011. 3. 30. 02:50 cocos2d
cocos2d : Actions : Composition
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 actionWithDuration: 2 angle: 720], [sprite runAction: action]; |
CCRepeat
times 인자의 숫자만큼 반복한다.
CCRepeatForever
무한 반복 액션
* CCSequence 액션 안에 CCRepeatForever 액션을 넣을 수는 없다.
2011. 3. 29. 02:10 cocos2d
cocos2d : Basic Actions
Action이름에 To가 붙은것은 상태변화의 최종값을 인자로 받는것이고 By가 붙은 것은 해당값만큼 변화시키것을 나타낸다.
현재 position이 10,10 인경우 CCMoveTo 에 position 30,30 을 주면 30,30값으로 이동되는것이고
CCMoveBy 30,30값을 주면 최종 위치는 40,40이된다.
거의 모든 Actions는 reverse 메소드를 가지고 있으면 이는 반대 행동값을 나타낸다.
position
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];
색농도를 바꿈
2011. 3. 29. 01:30 cocos2d
cocos2d : 이동시 가속도(1)
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];
2011. 3. 28. 02:56 cocos2d
cocos2d : Menu
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];
2011. 3. 27. 22:48 cocos2d
cocos2d : Scene 이동 및 효과
[[CCDirector sharedDirector] replaceScene: [SomeOtherScene scene]];
2. 이동하면서 효과주기
[[CCDirector sharedDirector] replaceScene:
효과 종류
CCTransitionFade : Fade in & Fade out
CCTransitionFlipAngular : 종이를 뒤집듯이 180도 회전 하면서 앵글이 아래로 갔다가 돌아옴.
CCTransitionShrinkGrow : 기존 씬이 멀어지면서 새로운 씬이 가까워짐
CCTransitionMoveInB : 아래에서 새 씬이 올라오고 기존씬이 사라짐
CCTransitionMoveInT : 위에서 새 씬이 내래오고 기존씬이 사라짐
CCTransitionMoveInL : 왼쪽에서
CCTransitionMoveInR : 오른쪽에서
CCTransitionFadeTR :
CCTransitionFadeUp
CCTransitionFlipX : 종이를 뒤집듯이 왼쪽에서 오른쪽으로 180도 회전
CCTransitionFlipY : 종이를 뒤집듯이 위에서 아래로 180도 회전
CCTransitionPageTurn : 책 페이지를 넘기듯이
CCTransitionCrossFade : 새 씬이 일단 겹쳐지고 기존씬이 천천히 사라짐
2011. 3. 27. 22:39 cocos2d
cocos2d : Layer 터치 이벤트 처리
1. 헤더 등록
#import "CCTouchDispatcher.h"
- (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 {
}