Animation을 정리하기 전에 먼저 Atlas Image를 만드는 방법과 사용법에 대한 정리 필요.
Atlas Image는 여러개의 이미지들을 "하나의 큰 이미지"로 만드는 것.
어플리케이션에서 사용되는 수많은 이미지의 자원 관리를 위해 일반적으로 Atlas Image를 만들어 사용.
TexturePacker : https://www.codeandweb.com/texturepacker
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 모바일 게임 프로그래밍] 의 내용을 정리.
댓글 없음:
댓글 쓰기