1.클래스 설명

어떤 변수는 한번 이상을 트리거하게 됩니다.(이 함수는 일대일대응이 아닙니다.) 
그래서 내부 액션은 이 변수값에 다시 영향을 받게 됩니다. CCMoveBy, CCScaleBy, CCRotateBy 같은 간단한 액션은 EaseBack 액션에 적용하는 것이 무방하지만 CCSequence 또는 CCSpawn 액션은 예기치 못한 결과를 얻을 수 있습니다.
<출처 :http://www.cocos2d-iphone.org/wiki/doku.php/ko:prog_guide:actions_ease

 
==>이전의 이런설명과 달리 이 클래스의 시간변수는 일대일 대응이 됩니다. 
   그러므로 CCSequence 와  CCSpawn Action을 사용해도 무방합니다. 
==> 지수함수를 시뮬레이션 해놓은 클래스 입니다.  


2. 클래스 관계도


==> 지수함수를 시뮬레이션 해놓은 클래스 입니다.  

3. 추가된 멤버변수/함수
==> EaseAction의 핵심 함수 update(오버라이드됨)에 중요한 수식이 있습니다. 
    이는 EaseAction의 특성을 구별지을수 있는 핵심 부분이기에 각 클래스별 
    오버라이딩된 update(float t)를 살펴보겟습니다.

   

CCEaseExponentialIn 
@Override

    public void update(float t) {

        other.update((t == 0) ? 0 : (float) Math.pow(2, 10 * (t / 1 - 1)) - 1 * 0.001f);

    }


CCEaseExponentialInOut 

 @Override

    public void update(float t) {

    t /= 0.5f;

        if (t < 1)

            t = 0.5f * (float) Math.pow(2, 10 * (t - 1));

        else

            t = 0.5f * (-(float) Math.pow(2, -10 * (t - 1) ) + 2);

        other.update(t);

    }


CCEaseExponentialOut 

 @Override

    public void update(float t) {

        other.update((t == 1) ? 1 : ((float) (-Math.pow(2, -10 * t / 1) + 1)));

    }


==>클래스 관계도의 특성표는 위에 오버라이딩된 함수의 공식에 따른것입니다. 
==> 바로 여기에서 알수 있듯이 EaseAction을 오버라이딩하고 여기처럼 update() 부분을
    오버라이딩해서 쓴다면 사용자별 EaseAction을 만들수 있을것 입니다. 
    (수학책을 방정식 공석을 찾아 한번 해보세요 ㅎㅎㅎ 나중에 저도 도전해볼려고 합니다)
==> 오버라이딩된 함수 내부를 상세하게 설명할까 고민했지만 이건 별의미 없는것 같아서 
    패스 합니다. 



4.사용법및 적용가능한곳.

 public static CCEaseExponentialIn action(CCIntervalAction action) {

        return new CCEaseExponentialIn(action);

    } 

 
public static CCEaseExponentialOut action(CCIntervalAction action) {

        return new CCEaseExponentialOut(action);

    }
 

public static CCEaseExponentialOut action(CCIntervalAction action) {

        return new CCEaseExponentialOut(action);

    } 

 


==> 이처럼 동일합니다. 
==> CCNode의 속성을 변경시키는 액션은 어떤것이든지 적용이 가능합니다만. 
    CCSequence 또는 CCSpawn 액션은 자신이 원했던 결과물을 얻을수 있습니다.
Posted by 수다쟁이증후군 :