cocos2dx action

9743 단어 cocos2dx
Cocos2d - x 학습 노트 (12: Action 대 총 결) 주의: 본 고 는 나무 블 로그 에서 인용 되 었 습 니 다.http://blog.sina.com.cn/s/blog_659 b2b 3201011 n7c. html 네트워크 글 을 수정 합 니 다.
1. 기본 동작
     Cocos 2d 가 제공 하 는 기본 동작: 순간 동작, 지연 동작, 작 동 속도.     순간 동작: 시간 이 필요 없 이 바로 완성 하 는 동작 입 니 다.순간 동작의 공통 기 류 는 인 스 턴 트 액 션 이다.     Cocos 2d 는 다음 과 같은 순간 동작 을 제공 합 니 다.
  • 방치 – 장소
  •     flight->runAction(CCPlace::actionWithPosition(p));
  • 숨 기기 – 숨 기기
  •     flight->runAction(CCHide::action());
  • 표시 – 표시
  •     flight->runAction(CCShow::action());
  • 보 이 는 전환 – ToggleVisibility
  •     flight->runAction(CCToggleVisibility::action());
  • 수평 회전 / 수직 회전
  •     flight->runAction(CCFlipX::actionWithFlipX(true));    flight->runAction(CCFlipY::actionWithFlipY(true));
  • 격자
  •     격자 재 활용 - CCReuseGrid | 격자 정지 - CCStopGrid
    2. 지연 동작
        지연 동작 은 동작의 완성 에 일정한 시간 이 필요 하 다 는 것 을 가리킨다.따라서 actionWithDuration 은 지연 동작 이 실 행 될 때의 첫 번 째 매개 변수 이 고 지연 동작의 공통 기 류 는 CCIntervalAction (조합 동작 류 포함) 이다.    Cocos2d 는 다음 과 같은 순간 동작 을 제공 합 니 다.
  • 이동 - CCMoveTo
  •     CCActionInterval *action = CCMoveTo::actionWithDuration(ccTime duration, CCPosition& position);
        sprite->runAction(action);
  • 이동 – CCMoveBy
  • 점프 – CCJumpTo   종점 위치 와 점프 의 높이 와 횟수 를 설정 합 니 다.
  • 점프 – CCJumpBy   종점 위치 와 점프 의 높이 와 횟수 를 설정 합 니 다.
  • 베 세 르 – CCBezierBy  베 어 셀 곡선 3 회 지원: P0 - 기점, P1 - 기점 접선 방향, P2 - 종점 접선 방향, P3 - 종점.
  • - CCScale To 로 확대   확대 배 수 를 설정 하여 부동 소수점 형 입 니 다.
  • 증폭 – CCScaleBy
  • – CCRotateTo
  • 로 회전
  • 회전 – CCRotateBy
  • 깜빡 임 – CCBlink   깜빡 임 횟수 설정
  • 색조 변화 – CCTinto
  • 색조 변환 – CCTintBy
  • 어 두 워 짐 – CCFadeTo
  • 무 에서 밝 아 짐 – CCFadeIn
  • 밝 음 에서 없 음 – CCFadeOut
  • 3. 조합 동작
       일정한 순서에 따라 상술 한 기본 동작 을 조합 하여 일관성 있 는 조합 동작 을 형성한다.조합 동작 은 다음 과 같은 몇 가 지 를 포함한다.
  • 시퀀스 – CCSequence
  •     Sequence 의 사용 은 매우 간단 하 며, 이 클래스 도 CCIntervalAction 에서 파생 되 어 그 자체 가 CocosNode 대상 에 의 해 실 행 될 수 있다.이런 역할 은 바로 선순 으로 몇 개의 동작 을 배열 한 다음 에 선후 순서에 따라 하나씩 집행 하 는 것 이다.
        flight->runAction(CCSequence::actions(action0, action1, action2, NULL));
  • 동기 화 – Spawn
  •     Spawn 의 사용 은 매우 간단 하 며, 이 클래스 도 IntervalAction 에서 파생 되 어 그 자체 가 CocosNode 대상 에 의 해 실 행 될 수 있다.이런 역할 은 여러 동작 을 동시에 병행 하 는 것 이지 만 동작 을 동시에 수행 할 수 있어 야 한다.예 를 들 어 이동 식 반전, 변색, 크기 변화 등 이다.    특히 마지막 완성 시간 을 동기 화 하 는 것 은 기본 동작 에서 사용 할 때 가장 큰 사람 이 결정 하 는 것 이다.
        flight->runAction(CCSpawn::actions(action1, action2, sequence, NULL));
  • 중복 유선 횟수 – Repeat
  •     한 정 된 횟수 의 동작 을 반복 하 며, 이 클래스 도 인 터 벌 액 션 에서 파생 돼 코 코스 노드 대상 이 수행 할 수 있다.
        CCFiniteTimeAction *sequence = CCSequence::actions(action1, action2, NULL);    // 상기 동작 시퀀스 3 회 반복 실행    flight->runAction(CCRepeat::actionWithAction(sequence, 3));
  • 반동 – Reverse
  •      역 동작 은 역방향 (역방향) 으로 특정한 동작 을 수행 하고 동작 서열 에 대한 역 동작 서열 을 지원 하 는 것 이다.반동 은 전문 적 인 종류 가 아니 라 CC FiniteAction 이 도입 한 인터페이스 이다.모든 클래스 가 반동 을 지원 하 는 것 은 아 닙 니 다. XxxxTo 클래스 는 반동 을 지원 하지 않 습 니 다. XxxxBy 클래스 는 보통 지원 합 니 다.CCFiniteTimeAction *action2 = action1->reverse();
  • 애니메이션 – 애니메이션
  •     애니메이션 은 정령 자체 가 영상 을 연속 으로 집행 하여 시 뮬 레이 션 운동 의 효 과 를 형성 하 는 것 입 니 다. 걸 을 때의 정령 상태, 싸 울 때의 상태 등 입 니 다.
  • 무한 반복 – RepeatForever
  •     RepeatForever 는 Action 클래스 에서 직접 파생 되 기 때문에 시퀀스 와 동기 화 에 참여 할 수 없습니다.자신 도 반대로 실행 할 수 없다.이 종류의 역할 은 멈 출 때 까지 특정한 동작 이나 동작 순 서 를 무기한 으로 집행 하 는 것 이다.    CCAction* action = sprite->runAction(CCRepeatForever::actionWithDuration(CCSequence::actions(action1, action2, NULL));
    이때 action 을 얻 은 다음 이 동작 에 tag 를 설정 할 수 있 습 니 다.
        action->setTag(1);
        우리 가 이 무한 반복 을 멈 추고 싶 을 때 이 tag 를 이용 하여 동작 을 삭제 할 수 있 습 니 다.
        sprite - > stopActionByTag (1); 4. 속도 변화
        기본 동작 과 조합 동작 은 정령 에 대한 각종 운동, 애니메이션 효과 의 변 화 를 실현 했다. 그러나 이러한 변화의 속 도 는 변 하지 않 는 다. CCEaseAction 을 기본 으로 하 는 클래스 와 CCSpped 류 를 통 해 우 리 는 요정 이 애 작 을 수행 하 는 속 도 를 편리 하 게 수정 할 수 있다. 빠 른 속도 에서 느 린 속도 로 할 수 있 는 지, 느 린 속도 에서 빠 른 속도 로 할 수 있다.
  • EaseIn 은 느 린 것 에서 빠 른 것 으로 나 타 났 다.
  • Ease Out 은 빠 른 속도 에서 느 린 속도 로
  • EaseInOut 은 느 린 것 에서 빠 른 것 으로, 빠 른 것 에서 느 린 것 으로.
  • Ease Sine In 은 느 린 것 에서 빠 른 것 으로 나 타 났 다.
  • Ease Sine Out 은 빠 른 속도 에서 느 린 속도 로
  • Ease Sine InOut 은 느 린 것 에서 빠 른 것 으로, 빠 른 것 에서 느 린 것 으로.
  • EaseExponentialIn 은 느 린 것 에서 매우 빠르다.
  • Ease ExponentialOut 은 매우 빠 르 고 느리다.
  • Ease ExponentialInOut 은 느 린 것 에서 빠 른 것 으로, 빠 른 것 에서 느 린 것 으로.
  • EaseElasticIn 고무줄 식 속도 변화
  • EaseElasticOut
  • EaseElasticInOut
  • EaseBounceIn 점프
  • EaseBounceOut
  • EaseBounceInOut
  • EaseBackIn
  • EaseBackOut
  • EaseBackInOut
  • 속 도 는 인공 적 으로 속 도 를 설정 하고 SetSpeed 를 통 해 계속 조정 할 수 있다.
  • 5. 확장 동작
     
  • 지연 동작 – Delay, 예 를 들 어 동작 시퀀스 에 시간 간격 을 추가 합 니 다
  •     flight->runAction(CCSequence::actions(action1, CCDelayTime::actionWithDuration(1.0f), action2, NULL));
  • 함수
  •     동작 시퀀스 의 중간 이나 끝 에 함 수 를 호출 하여 모든 작업 을 수행 합 니 다: 동작, 상태 수정 등. cocos2d - x 에서 함 수 를 호출 하 는 동작 은 모두 4 가지 입 니 다.
        1. CCCallFunc 는 함수 만 호출 되 고 인자 가 없습니다.
    1 void ExtendActionLayer::onCallBack1()2 {3     flight->runAction(CCTintBy::actionWithDuration(0.5f, 255, 0, 255));4 }56 void ExtendActionLayer::onCallFunc(CCObject* pSender)7 {8     CCFiniteTimeAction *action1 = CCMoveBy::actionWithDuration(2.0f, ccp(200, 200));9     CCFiniteTimeAction *action2 = action1->reverse();10     CCFiniteTimeAction *actionF = CCCallFunc::actionWithTarget(this, callfunc_selector(ExtendActionLayer::onCallBack1));11     flight->runAction(CCSequence::actions(action1, actionF, action2, NULL));12 }
     
    2.CCCallFuncN
    함 수 를 호출 하고 현재 대상 의 포인터 (CCNode 포인터) 를 첫 번 째 매개 변수 로 전달 합 니 다.
     
     1 void ExtendActionLayer::onCallBack2(CCNode* pSender)
     2 {
     3     //       ,pSender  flight,         actionF
     4     pSender->runAction(CCTintBy::actionWithDuration(1.0f, 255, 0, 255));
     5 }
     6 
     7 void ExtendActionLayer::onCallFuncN(CCObject* pSender)
     8 {
     9     CCFiniteTimeAction *action1 = CCMoveBy::actionWithDuration(2.0f, ccp(200, 200));
    10     CCFiniteTimeAction *action2 = action1->reverse();
    11     CCFiniteTimeAction *actionF = CCCallFuncN::actionWithTarget(this, callfuncN_selector(ExtendActionLayer::onCallBack2));
    12     flight->runAction(CCSequence::actions(action1, actionF, action2, NULL));
    13 }
    

     
    3.CCCallFuncND
    이전 방식 을 바탕 으로 데이터 파 라 메 터 를 추가 합 니 다. 이것 은 void 포인터 형식 입 니 다.
     
     1 void ExtendActionLayer::onCallBack3(CCNode* pSender, void* pData)
     2 {
     3     pSender->runAction(CCTintBy::actionWithDuration(static_cast<float>((int)pData), 255, 0, 255));
     4 }
     5 
     6 void ExtendActionLayer::onCallFuncND(CCObject* pSender)
     7 {
     8     CCFiniteTimeAction *action1 = CCMoveBy::actionWithDuration(2.0f, ccp(200, 200));
     9     CCFiniteTimeAction *action2 = action1->reverse();
    10     //             (void *)        ,    Action         ,      。
    11     CCFiniteTimeAction *actionF = CCCallFuncND::actionWithTarget(this, callfuncND_selector(ExtendActionLayer::onCallBack3), (void *)2);
    12     flight->runAction(CCSequence::actions(action1, actionF, action2, NULL));
    13 }
    

     
    4.CCCallFuncO
    함 수 를 호출 하고 CCObject 지침 을 매개 변수 로 전달 합 니 다. 이것 은 자주 사용 되 지 않 는 것 같 습 니 다. 자료 가 적 고 나중에 깊이 들 어 갑 니 다.

    좋은 웹페이지 즐겨찾기