cocos2d-x 공부용2014. 9. 15. 14:35

원글 출처 : http://horns.tistory.com/14


-10- 코인 애니메이션


1. Move State


GameCoin.h

class GameCoin : public Sprite
{
private:

public:
	enum gameState{
		LIVE,
		DEAD,
		SELECT,
		MOVE,
	};

2. 움직이는 액션 추가


HelloWorldScene.h

class HelloWorld : public cocos2d::Layer
{
private:
..
public:
..
    void moveCoin(GameCoin* coin, Point& pos);
    void coinMoveDone(Node* pSender);

};

HelloWorldScene.cpp

void HelloWorld::moveCoin(GameCoin* coin, Point& pos){//추가
	float duration = 0.0f;
	float coinSpeed = 1000.0f;
	Point prevPos = coin->getPosition();
	coin->setState(GameCoin::MOVE);
	coin->stopAllActions();

	duration = prevPos.getDistance(pos)/coinSpeed;

	FiniteTimeAction* movePos = Sequence::create(
			MoveTo::create(duration, pos),
			CallFuncN::create(this, callfuncN_selector(HelloWorld::coinMoveDone)), NULL);

	coin->runAction(movePos);
}

void HelloWorld::coinMoveDone(Node* pSender){//추가
	GameCoin* coin = (GameCoin*)pSender;
	coin->setState(GameCoin::LIVE);
}

void HelloWorld::changeCoin(int index1, int index2){
	Point tmpPos;
	GameCoin* tmpCoin1 = (GameCoin*)_gameCoins->objectAtIndex(index1);
	GameCoin* tmpCoin2 = (GameCoin*)_gameCoins->objectAtIndex(index2);

	tmpPos = tmpCoin2->getPosition();
	tmpCoin2->setPosition(tmpCoin1->getPosition());
//	tmpCoin1->setPosition(tmpPos);

	moveCoin(tmpCoin1, tmpPos);

	_gameCoins->exchangeObjectAtIndex(index1, index2);
}

실행 결과 코인이 아래로 움직이면서 내려오면 성공입니다.


Posted by 아이시네프