Base class for Easing actions with rate parameters
==> 가속도 효과를 나타내기 위해서 내부 액션의 가속도를 변경
변경시키기 위한 추상화 클래스가 아닙니다. 기존에는 추상화 해놓고이거는 왜
추상화 안해 놓았는지 .... cocos2d가 아직 완성이 안되었다는걸가요? 흠...
조금더 고민을 해보아야 할듯합니다.
==> 단지 MoveAction 만을 위한 클래스는 아니며 CCNode 속성에 있는 모든 값을
대상으로 합니다.
==> (참고 : EaseAction 이란 ?)
2. 클래스 관계도
3.추가된 멤버 변수 / 함수
==>추가된 멤버 변수는 이고
/** rate value for the actions */
float rate;
==> 추가된 멤버 함수(추상화 함수 가 아닌 단지 오버라이드 함수 입니다.)
==> 멤버변수가 늘어난것이니만큼 기존의 copy()와 reverse()를 새롭게 정의하는것은
당연합니다.
@Override
public CCEaseRateAction copy() {
return new CCEaseRateAction(other.copy(), rate);
}
@Override
public CCIntervalAction reverse() {
return new CCEaseRateAction(other.reverse(), 1 / rate);
}
4.CCEaseRateAction를 상속하는 클래스들
CCEaseIn.java
CCEaseInOut.java
CCEaseOut.java
==> 기존의 네이밍 규칙과 좀 다르네요 머 제가 한게 아니니까 일단 그려려니 할께요^^;;
==> 위의 클래스 설명을 따로 뺄까생각해보았지만.
좀 비효울적인듯 하여 아래에 추가로 올립니다.
4-1 CCEaseIn/ CCEaseInOut / CCEaseOut 클래스 설명
==>기존의 CCRateAction을 상속하여 지수함수를 시뮬레이션 합니다.
==>CCEaseExponential~~ 류의 클래스와 거의 비슷하게 나오지만 조금 다르네요 쪼끔...
개인적인 생각으로 굳이 이럴필요 있나 싶을정도로 말이죠.
4-2. 클래스 관계도
4-3. 추가된 멤버변수/함수
==> 없습니다. 라고 단호하게 말할까 했지만. 클래스 멤버 변수가 없다는것뿐이지
EaseAction의 핵심 함수 update(오버라이드됨)에 있습니다.
이는 EaseAction의 특성을 구별지을수 있는 핵심 부분이기에 각 클래스별
오버라이딩된 update(float t)를 살펴보겟습니다.
==> EaseAction의 동일한 반복입니다.
CCEaseIn
@Override
public void update(float t) {
other.update((float) Math.pow(t, rate));
}
CCEaseInOut
@Override
public void update(float t) {
int sign = 1;
int r = (int) rate;
if (r % 2 == 0)
sign = -1;
t *= 2;
if (t < 1)
other.update(0.5f * (float) Math.pow(t, rate));
else
other.update(sign * 0.5f * ((float) Math.pow(t - 2, rate) + sign * 2));
}
CCEaseOut
@Override
public void update(float t) {
other.update((float) Math.pow(t, 1 / rate));
}
==> 클래스 관계도의 특성표는 위에 오버라이딩된 함수와 float rate변수 의 공식에
따른것입니다.
==> 바로 여기에서 알수 있듯이 CCEaseRateAction을 상속해서 여기처럼 update() 부분을
오버라이딩해서 쓴다면 사용자별 CCEaseRateAction을 만들수 있을것 입니다.
(솔직히 저거 쓸수 있는 사람은 별로 안되겟죠^^)
4-4.사용법및 적용가능한곳.
public static CCEaseIn action(CCIntervalAction action, float rate) {
return new CCEaseIn(action, rate);
}
protected CCEaseIn(CCIntervalAction action, float rate) {
super(action, rate);
}
---------------------------------------------------------------------------------
public static CCEaseInOut action(CCIntervalAction action, float rate) {
return new CCEaseInOut(action, rate);
}
protected CCEaseInOut(CCIntervalAction action, float rate) {
super(action, rate);
}
---------------------------------------------------------------------------------
public static CCEaseOut action(CCIntervalAction action, float rate) {
return new CCEaseOut(action, rate);
}
protected CCEaseOut(CCIntervalAction action, float rate) {
super(action, rate);
}
==> 보시다 싶이 지금까지와는 달리 인자값을 2개를 모두 주어야 합니다.
(inner action값과 rate 값 두개)
==> CCNode의 속성을 변경시키는 액션은 어떤것이든지 적용이 가능합니다만.
일대일 대응이기때문에 CCSequence 또는 CCSpawn 액션또한 자신이 원했던 결과물을
얻을수 있을겁니다.
'안드로이드 cocos2d 강좌 > cocos2d 안드로이드 클래스 심화' 카테고리의 다른 글
CCEaseAction 의 라스트 정리 (또 다른 시선) (cocos2d for android) (0) | 2011.09.15 |
---|---|
CCEaseSineIn / CCEaseSineInOut / CCEaseSineOut 클래스 분석 (cocos2d for android) (0) | 2011.09.15 |
CCEaseExponentialIn / CCEaseExponentialInOut / CCEaseExponentialOut 클래스 분석 (cocos2d for android) (0) | 2011.09.15 |
CCEaseElastic 와 상속 클래스 분석 (cocos2d for android) (0) | 2011.09.15 |
CCEaseBounce 와 상속 클래스 분석 (cocos2d for android) (0) | 2011.09.15 |
CCEaseBackIn / CCEaseBackInOut / CCEaseBackOut 클래스 분석 (cocos2d for android) (0) | 2011.09.15 |
CCEaseAction (cocos2d for android) (0) | 2011.09.14 |
CCCameraAction 와 CCOrbitCamera (cocos2d for android) (0) | 2011.09.14 |
CCIntervelAction의 상속 클래스들 분석. (0) | 2011.09.14 |
CCIntervelAction과 CCInstantAction (cocos2d for android) (0) | 2011.09.14 |