2010-11-01 18 views
6

Realmente no puedo encontrar mi respuesta después de navegar (no un montón de temas en cocos2d con centro de juego)2d Cocos y Game Center (tema tabla de posiciones)

que actualmente he puesto mi centro de juego no lineal y estoy en condiciones de autenticar, pero cuando creo la tabla de clasificación, se lanza hacia los lados en retrato, supongo. Intentó girar la vista, pero nada. Mi juego solo funciona en modo paisaje. Estoy ejecutando beta 3 0.99.5. Aquí está mi código de referencia.

tempVC = [[RootViewController alloc] init]; 

GKLeaderboardViewController *leaderboardController = [[[GKLeaderboardViewController alloc] init] autorelease]; 

if (leaderboardController != nil) 
{ 
    leaderboardController.leaderboardDelegate = self; 
    [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view]; 
    [tempVC presentModalViewController:leaderboardController animated:YES]; 
} 

Realmente agradecería cualquier ayuda. Obteniendo ninguna respuesta del tablero cocos2d.

EDIT:

fija cambiando auto-rotación para CCDirector. Además, tuve problemas para perder la funcionalidad multitáctil después de mostrar gamecenter. El despido de la junta debe utilizar este:

[tempVC dismissModalViewControllerAnimated:YES]; 
[tempVC.view.superview removeFromSuperview]; 
+1

Gracias ... No pude hacer que mi tabla de clasificación o logros se descartaran y tu EDIT me resuelve por mí. – jsherk

Respuesta

2

Se corrigió cambiando la autorrotación a CCDirector. Además, tuve problemas para perder la funcionalidad multitáctil después de mostrar gamecenter. El despido de la junta debe utilizar este:

[tempVC dismissModalViewControllerAnimated:YES]; 
[tempVC.view.superview removeFromSuperview]; 
+0

Siempre que mi comentario sea una respuesta ... vea abajo. – RoLYroLLs

+0

"Solucionado al cambiar la autorrotación a CCDirector" ¿qué significa esto? – Jonny

-1

A GKLeaderboardViewController se utiliza para mostrar la tabla de clasificación predeterminado, que es un retrato único punto de vista. Para mostrar una tabla de clasificación horizontal, debe implementar su propia vista de tabla de clasificación personalizada.

Editar: Desde la escritura inicial de esto, GKLeaderboardViewController se ha mejorado para que funcione perfectamente en cualquier orientación.

+0

¿Entonces el que está en juegos como Angry Birds es completamente personalizado? No estoy seguro de haberlo entendido. – Arbel

+0

Angry Birds usa el Crystal SDK para su clasificación. http://www.crystalsdk.com/ –

+0

Gracias por la respuesta – Arbel

0

Tuve el mismo problema con el lanzamiento de GC en retrato en el iPad cuando mi juego Cocos2D estaba en el paisaje. Se corrigió esto derivando mi controlador GameKit de rootViewController en lugar de UIViewController.

@interface GCController: RootViewController {

+0

No, no funcionó para mí. Mismo problema. Parece que la vista real de GameCenter es paisaje girada hacia los lados. Así que tengo el juego en el paisaje con una tabla de líderes que aparece cubriendo menos de la mitad de la pantalla y se extiende más allá de la pantalla. (¿No estoy seguro si eso tiene algún sentido?) Estoy completamente perdido. – Arbel

2

= tuve este problema y estaba rompiendo mi pelo durante días, pero finalmente llegué que funcione perfectamente en modo horizontal, no importa lo que haría que el usuario está sosteniendo el teléfono . Es un poco raro, y si alguien lo sabe mejor, ¡házmelo saber!

1 - Tengo que tener la vista (del controlador que llama a la tabla de clasificación) en el retrato, en mi caso hecho en IB

2 - Sólo funciona si apoya la orientación vertical (incluso si se ve como paisaje) -

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

3 - a continuación, necesita cambiar el tamaño & gire la tabla de clasificación -

[self presentModalViewController: leaderboardController animated: YES]; 

leaderboardController.view.transform = CGAffineTransformMakeRotation(CC_DEGREES_TO_RADIANS(0.0f)); 
leaderboardController.view.bounds = CGRectMake(0, 0, 480, 320); 
leaderboardController.view.center = CGPointMake(240, 160); 

4 - ¡listo! Está funcionando bien. Espero que funcione para usted también.

1

si podría ayudar, he encontrado que la simple eliminación de la GKLeaderboard del supervista no es realmente suficiente, por lo que después de utilizar

[tempVC.view.superview removeFromSuperview];

también debería utilizar

[liberación tempVC];

Sin esto, GKLeaderboardViewController está haciendo cosas raras, como después de la segunda llamada, no se auto rota en la vista.

espero que ayude

1

El uso de este en v1.0.1 cocos2d, última versión estable del decimonoveno Abr, 2012, esto en realidad no permite la vc animado a desaparecer. Es probable que la ejecución de este lugar:

[tempVC dismissModalViewControllerAnimated:YES]; 
[[[tempVC view] superview] performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1.2]; 
[tempVC performSelector:@selector(release) withObject:nil afterDelay:1.3];

+0

Buena respuesta, pero a partir de una actualización reciente de iOS (iOS 4?) Ahora puede usar bloques en este método para ser un poco menos hacky: '[vc dismissViewControllerAnimated: (BOOL) finalización:^(void) completion];' Ex : '[tempVC dismissViewControllerAnimated: YES completion:^{\t [tempVC.view removeFromSuperview]; [lanzamiento tempVC]; }]; ' – jmosesman

1

La correcta era es implementar e incluir esta categoría:

.h

#import <GameKit/GameKit.h> 

@interface GKLeaderboardViewController (additions) 
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation; 
-(NSUInteger)supportedInterfaceOrientations; 
@end 

.m

#import "GKLeaderboardViewController+additions.h" 

@implementation GKLeaderboardViewController (additions) 
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    return UIInterfaceOrientationIsLandscape(toInterfaceOrientation); 
} 
-(NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscape; 
} 
@end 
+1

Es posible que desee hacer la misma categoría en' GKGameCenterViewController', 'GKAchievementViewController' y el controlador de creación de coincidencias. – Jonny

Cuestiones relacionadas