0

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

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

4

4 回答 4

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动作使用球坐标围绕屏幕中心旋转相机。

于 2011-09-05T21:36:32.137 回答
1

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

于 2011-09-06T06:41:53.563 回答
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。你会实现你想要的动画风格,我猜..希望这会有所帮助..快乐编码... :)

于 2011-09-06T05:44:02.353 回答
0

我在 cocs2d-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));
于 2012-11-02T11:38:04.160 回答