2011-09-05 5 views
0

Je développe un jeu où lorsque l'utilisateur touche une carte, il va se retourner lentement et le numéro apparaîtra. Dans ce but, quelle API cocos2d puis-je utiliser? Ou devrais-je créer une animation avec des cadres indiquant la bascule?renverser des cartes dans un jeu de cartes

Répondre

1

Pour Retournement une vue u peut le faire comme ça,

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

Avant de faire l'animation tout simplement créer une étiquette et l'ajouter en tant que sous-vue à la UIView. Réglez le texte sur le numéro que vous souhaitez afficher après l'animation. Cacher cette étiquette. À la fin de l'animation qui est après commitAnimations, il suffit de définir la propriété cachée de l'étiquette à NO. Vous obtiendrez le style d'animation que vous voulez, je suppose .. J'espère que cela aide .... Codage heureux ... :)

+0

Merci pour la réponse. J'ai fait l'implémentation avec 2 UIImageViews et ça marche. J'ai placé les vues de l'image les unes sur les autres et quand je clique sur la carte active, elle retourne et l'autre carte est affichée (la propriété cachée de la carte active ira à OUI). Mais il y a un problème. Une transition s'étend sur 360 degrés de sorte que je vois à nouveau la carte active avant qu'elle ne passe à l'état caché. tu as mon problème? donc la transition n'est pas très lisse. – tguclu

+0

pourrait pls poster un peu de votre code ur .... Je pense que je pourrais aider alors ... – booleanBoy

+0

https://rapidshare.com/files/530484171/FlipCard.zip – tguclu

2

Vous pouvez créer quelque chose de similaire à CCTransitionFlipX. Mais au lieu de CCScene, laissez-le fonctionner sur vos noeuds de cartes (sprites).

est ici la mise en œuvre de cette classe (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 

Fondamentalement, il dirige une séquence de CCActions sur les deux scènes avec la durée donnée. L'action CCOrbitCamera orbit la caméra autour du centre de l'écran en utilisant des coordonnées sphériques.

1

GeekGameBoard est une application mac qui a un tas de jeux en elle. Il a également une classe de carte qui gère des flips et autres. J'espère que cela pourra aider!

+0

Salut, merci pour info. Je le vérifie – tguclu

0

que je fais dans cocs2d-android-1 comme

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));