2010-02-13 6 views
2

Voici ma question.Basculer entre les contrôleurs OpenGL ES View et UIKit View

Je développe un jeu sur iPhone avec OpenGL ES. J'ai commencé mon développement en utilisant le modèle Xcode OpenGL ES Application, avec un EAGLView, etc.

Mon menu et ma vue de jeu utilisent la même vue OGL mais maintenant je veux ajouter un classement de score, j'ai donc besoin d'un clavier et d'un champ de texte pour écrire le nom, et quelques étiquettes ou une vue de table pour montrer le classement. : Bien, je pense que la meilleure solution est d'avoir mon glView actuel avec un autre UIKit View où je mettrai le classement de score et ferai la commutation.

J'ai le livre Apress Début de développement de l'iPhone et je suis le chapitre sur les vues multiples. Je prends le point de basculer entre deux UIViewController mais quand je vais faire des changements dans mon jeu ... glView n'est pas un UIViewController, c'est un UIView, donc je suis perdu.

Quelqu'un peut-il m'aider avec ceci? :-(

Merci beaucoup.

Répondre

2

Eh bien, je pense que j'ai résolu le problème, donc je partage la solution avec vous

J'ai commencé à partir de l'exemple de vues multiples du livre: trois xib (fenêtre principale et deux vues nous passons), l'app délégué, deux Contrôleur de vue pour chaque vue et un contrôleur de vue racine qui basculer entre nos vues

j'ai ajouté la classe EAGLView et générateur de ce projet et a changé la méthode initWithCoder sur EAGLView à initWithFrame:

//- (id) initWithCoder:(NSCoder*)coder 
- (id)initWithFrame:(CGRect)frame 
{  
    if ((self = [super initWithFrame:frame])) { 
    // The same we had. 

Puis, dans mon contrôleur de vue racine j'ai ajouté un IBAction quand je tape sur un bouton:

- (IBAction)drawEAGLView:(id)sender { 
    CGRect rect = [[UIScreen mainScreen] applicationFrame]; 
    glView = [[EAGLView alloc] initWithFrame:CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height)]; 
    self.view = glView; 
    [glView startAnimation]; 
} 

Et c'est tout. Très simple et ça marche bien. Peut-être qu'il a besoin d'optimisation mais c'est un bon point de départ.

Donc, je peux faire maintenant mon classement de score: D

+0

Notez que vous fuyez le glView à chaque fois que vous appelez --drawEAGLView:. Vous devez le relâcher après l'avoir affecté à self.view. –

+0

Je ne suis pas sûr de comprendre ce que vous avez fait avec glView. Vous affectez un pointeur UIView à un objet UIViewController avec 'glView = [[EAGLView alloc] initWithFrame: CGRectMake (rect.origin.x, rect.origin.y, rect.size.width, rect.size.height) ]; ' – ray

0

Vous pouvez simplement pousser un viewcontroller normale au-dessus de la vue OpenGL (contrôleur) pour afficher une boîte de dialogue pour le classement de score. Par exemple avec presentModalViewController:animated:.

+0

Je fais une mise à jour et j'ai une nouvelle question. Je pense que ce que vous avez dit est ce que je cherche, mais pouvez-vous l'expliquer un peu plus? Merci. – emenegro

Questions connexes