I love iPhone, Android, Cocos2d-x
[Cocos2d-x] カードをめくるようなアクション
Cocos2d-x でカードをひっくり返すアクションを作ってみました。
表のカードと裏のカードの2枚の CCSprite をCCOrbitCamera を使ってカードをめくるようなアクションです。
上記のアクションのコードです。
#define FLIP_DURATION 1.0f
#define CARD_FACE_TAG 1
#define CARD_BACK_TAG 2
// 裏面カードを表示して半分までひっくり返すアクション
void Card::flipAction() {
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCSprite* card = CCSprite::spriteWithFile("card_face.png");
card->setPosition(ccp(winSize.width/2, winSize.height/2));
this->addChild(card, CARD_FACE_TAG, CARD_FACE_TAG);
card->setVisible(false);
CCSprite* card2 = CCSprite::spriteWithFile("card.png");
card2->setPosition(card->getPosition());
this->addChild(card2, CARD_BACK_TAG, CARD_BACK_TAG);
CCOrbitCamera* camera = CCOrbitCamera::actionWithDuration(FLIP_DURATION/2.0f, 1, 0, 0.0f, 90.0f, 0, 0);
CCHide* hide = CCHide::action();
CCCallFunc* func = CCCallFunc::actionWithTarget(this, callfunc_selector(HelloWorld::flipAction2));
CCActionInterval* action = (CCActionInterval*)CCSequence::actions(camera, hide, func, NULL);
card2->runAction(action);
}
// 半分までひっくり返ったところで表面のカードのアクション
void Card::flipAction2() {
CCSprite* card = (CCSprite*)this->getChildByTag(CARD_FACE_TAG);
CCShow* show = CCShow::action();
CCOrbitCamera* camera = CCOrbitCamera::actionWithDuration(FLIP_DURATION/2.0f, 1, 0, 270.0f, 90.0f, 0, 0);
CCActionInterval* action = (CCActionInterval*)CCSequence::actions(show, camera, NULL);
card->runAction(action);
}
関連する投稿
One comment
コメントをどうぞ
Additional comments powered by BackType




1retained…
…