在纸牌游戏中翻转牌

时间:2011-09-05 20:40:12

标签: iphone cocos2d-iphone uiviewanimation playing-cards

我开发了一款游戏,当用户触摸卡片时,它会慢慢翻转,数字会显示出来。 为此,我可以使用什么cocos2d API?

或者我应该创建带有指示翻转的帧的动画吗?

4 个答案:

答案 0 :(得分:2)

您可以创建与CCTransitionFlipX类似的内容。但是,不是使用CCScene,而是让它在您的卡节点(精灵)上运行。

以下是此类的实现(CCTransition.m):

//
// FlipX Transition
//
@implementation CCTransitionFlipX
-(void) onEnter
{
    [super onEnter];

    CCActionInterval *inA, *outA;
    [inScene_ setVisible: NO];

    float inDeltaZ, inAngleZ;
    float outDeltaZ, outAngleZ;

    if( orientation == kOrientationRightOver ) {
        inDeltaZ = 90;
        inAngleZ = 270;
        outDeltaZ = 90;
        outAngleZ = 0;
    } else {
        inDeltaZ = -90;
        inAngleZ = 90;
        outDeltaZ = -90;
        outAngleZ = 0;
    }

    inA = [CCSequence actions:
           [CCDelayTime actionWithDuration:duration_/2],
           [CCShow action],
           [CCOrbitCamera actionWithDuration: duration_/2 radius: 1 deltaRadius:0 angleZ:inAngleZ deltaAngleZ:inDeltaZ angleX:0 deltaAngleX:0],
           [CCCallFunc actionWithTarget:self selector:@selector(finish)],
           nil ];
    outA = [CCSequence actions:
            [CCOrbitCamera actionWithDuration: duration_/2 radius: 1 deltaRadius:0 angleZ:outAngleZ deltaAngleZ:outDeltaZ angleX:0 deltaAngleX:0],
            [CCHide action],
            [CCDelayTime actionWithDuration:duration_/2],                           
            nil ];

    [inScene_ runAction: inA];
    [outScene_ runAction: outA];

}
@end

基本上它在给定持续时间的两个场景上运行一系列CCAction。 CCOrbitCamera动作使用球面坐标围绕屏幕中心运行相机。

答案 1 :(得分:1)

对于翻转视图,你可以这样做,

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.6];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myview cache:YES];
[UIView commitAnimations];

在做动画之前,只需创建一个标签并将其作为子视图添加到UIView中。将文本设置为动画后要显示的数字。隐藏此标签。在commitAnimations之后的动画结束时,只需将标签的隐藏属性设置为NO即可。你会实现你想要的动画风格,我想..希望这有帮助....快乐编码...... :)

答案 2 :(得分:1)

GeekGameBoard是一个mac应用程序,里面有很多游戏。它还有一个处理翻转等的卡片类。希望有帮助!

答案 3 :(得分:0)

我在cocos2d-android-1中这样做

CCSprite sprite=CCSprite.sprite("icon.png");
CCIntervalAction a = (CCIntervalAction)CCOrbitCamera.action(2, 1, 0, 0, 360, 0, 0);
addChild(sprite,1);
sprite.runAction(CCRepeatForever.action(a));