CCAction 클래스 자체는 별의미 없어보입니다. 

멤버 변수가
public CCNode target;
private CCNode originalTarget
private int tag;

이렇게 3개밖에 없네요

타겟노드 와  구분자 tag

그럼 멤버 변수가 머 볼거 없으니 멤버 함수를 확인해 보니. 
Action이 한프레임동안 하는 일들을 알수 있었습니다. 
바로 아래와 같은데요. 

//! called before the action start. It will also set the target.
    public void start(CCNode aTarget) {
        originalTarget = target = aTarget;
    }

    //! called after the action has finished. It will set the 'target' to nil.
    //! IMPORTANT: You should never call "[action stop]" manually. Instead, use: "[target stopAction:action];"
    public void stop() {
        // target = null;
    }

    //! return YES if the action has finished
    public boolean isDone() {
        return true;
    }

    //! called every frame with it's delta time. DON'T override unless you know what you are doing.
    public abstract void step(float dt);

    //! called once per frame. time a value between 0 and 1
    //! For example: 
    //! * 0 means that the action just started
    //! * 0.5 means that the action is in the middle
    //! * 1 means that the action is over
    public abstract void update(float time);


멤버 함수별 상세한 설명은 안에 잘되어 있으니 
하나의 프레임동안 호출되는 함수들의 순서를 정리하겟습니다. 

바로 이렇습니다. 여기서 유추할수 있는건 이런 액션멤버변수들을 호출하는 무언가가 있다라는것이죠 일단 지금은 그정도로만 알고 있죠 무언가가 액션의 멤버 변수를 호출한다.그것도 체계적으로 말이죠 

 

CCAction은 아래 클래스로 확장 됩니다. 

CCFiniteTimeAction  
CCRepeatForever and CCSpeed

그럼 이 2가지 놈들과 CCAction의 관계를 볼까요?

CCFiniteTimeAction   과  CCAction의 관계입니다. 



CCRepeatForever  과 CCAction의 관계입니다. 


CCSpeed과 CCAction의 관계입니다.   

출처: http://www.cocos2d-iphone.org/api-ref/0.99.0/annotated.htm 


 보시다 시피 나머지 2개는 아직 알아 보지 않는 CCIntervelAction을 멤버로 가지고 있습니다.  그럼 
CCFiniteTimeAction  을 먼저 살펴보는게 맞을듯합니다. 


CCFiniteTimeAction  는 말그대로 한정된 시간을 가지는 액션입니다. 
클래스 설명을 보면

/** Base class actions that do have a finite time duration.

 Possible actions:

   - An action with a duration of 0 seconds

   - An action with a duration of 35.5 seconds

 Infitite time actions are valid

 */


 시간을 가지는액션의 기본클래스 입니다. 
0seconds 는 바로 CCNode 의 속성을 즉시 변경한다는 말이고 .
35.5 seconds는 CCNode의 속성을 35.5초 동안 변경한다는 말입니다.

CCAction의 멤버 변수외에  float duration이 추가 되었습니다. 
물론 이에 대한. set ,get 함수는 추가 되었구요.
하나 눈여겨 볼만 한것은.
멤버 한수로써 

public CCFiniteTimeAction reverse() {
        ccMacros.CCLOG(LOG_TAG, "Override me");
        return null;
 }

이 추가 되었다는 것입니다.  그리고 나서 자기를 상속한 클래스보고 오버라이딩 해라고 친절하게 말해 주세요 ㅎㅎㅎ 


이제 남은 것은 
CCRepeatForever and CCSpeed 요건데 위에서 보시다 시피 CCIntervelAction이 머하는건지 알수 있다면 좀더 이해가 빠를 것이라 생각됩니다. 

그래서 다음 강좌는  
CCIntervelAction 에 대해서 다루어 보겟습니다. 
Posted by 수다쟁이증후군 :