2017년 1월 2일 월요일

Cocos2d-x Animation과 Schedule

Animation을 정리하기 전에 먼저 Atlas Image를 만드는 방법과 사용법에 대한 정리 필요.
Atlas Image는 여러개의 이미지들을 "하나의 큰 이미지"로 만드는 것.
어플리케이션에서 사용되는 수많은 이미지의 자원 관리를 위해 일반적으로 Atlas Image를 만들어 사용.


Atlas Image 사용을 위해 먼저 plist 파일을 등록한다.
다음은 일반적으로 스프라이트 생성하는 방법과 같다.
      SpriteFrameCache::getInstance()->addSpriteFramesWithFile("?.plist");

      auto spr = Sprite::createWithSpriteFrameName("??.png");
      spr->setPosition(Point(240, 160));
      this->addChild(spr);

애니메이션 객체 생성 및 스프라이트 적용
      auto animation = Animation::create();
      animation->setDelayPerUnit(0.3); // 프레임 시간 간격 설정

      for (int i = 0; i < numImages; i++) {
            auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByName(StringUtils::format("??%d.png", i));
            animation->addSpriteFrame(frame);
      }

      auto animate = Animate::create(animation); // 애니메이션 객체를 액션으로 
      spr->runAction(animate); 

      spr->runAction(RepeatForever::create(animate)); // 무한히 반복하는 애니메이션으로 


Schedule
Cocos2d-x 에서는 타이머로 Schedule을 사용한다.
// Callback 함수, 호출 간격
this->schedule(schedule_selector(ScheduleScene::scheduleCallback), /*interval*/, /*repeat*/, /*delay*/); // delay만큼 지연된 후 repeat 횟수만큼 interval 간격으로 호출됨

void ScheduleScene::scheduleCallback(float delta)
{
      CCLOG("scheduleCallback : %f", delta);
}

scheduleUpdate() 를 사용하여 update 매소드를 사용하는 방법
scheduleOnce() 를 사용하는 방법
scheduleUpdateWithPriority() 를 사용하여 우선순위릘 부여하는 방법 등
기본형으로 구현이 가능하므로 몇가지 다른 방법도 있다는 정도만 알아두자. 

Schedule을 중지해야 할때
      unschedule(schedule_selector(호출한 메소드명))
      unscheduleAllSelectios(); // 모든 스케쥴을 중지
      unscheduleUpdate(); // update 스케쥴만 중지할때 
더이상 스케쥴이 사용되지 않을때 위의 방법으로 중지를 시킬 수 있다.


[Cocos2d-x 3 모바일 게임 프로그래밍] 의 내용을 정리.

 

댓글 없음:

댓글 쓰기