2011-04-06 23 views
8

He mirado alrededor, y he visto muy poco material sobre cómo integrar Cocos2d con UIKit (nota: no al revés). Lo que quiero decir es ... por ejemplo ... agregar una animación de sprites de cocos dentro de una UIView, que se coloca dentro de un controlador de vista dividida (como una subvista). ¿¡Cómo puedo hacer eso!?Integrando Cocos2D con UIKit

Quiero comenzar con una plantilla de proyecto UISplitView o la plantilla de proyecto UITabBar.

p.s. He estado haciendo desarrollo de iPhone desde hace un tiempo, pero soy un novato en lo que respecta al marco cocos2d.

Respuesta

11

Hay una demostración en Cocos2d llamada AttachDemo, donde se adjunta un director de Cocos2d a UIView. Si marca el método llamado -(void)runCocos2d.

Si nos fijamos en su código, se hace lo siguiente:

-(void) runCocos2d 
{ 
    if(state == kStateEnd) { 

     EAGLView *glview = [EAGLView viewWithFrame:CGRectMake(0, 0, 250,350)]; 
     [mainView addSubview:glview]; 

     CCDirector *director = [CCDirector sharedDirector]; 
     [director setOpenGLView:glview]; 

     CCScene *scene = [CCScene node]; 
     id node = [LayerExample node]; 
     [scene addChild: node]; 

     [director runWithScene:scene]; 

     state = kStateRun; 
    } 
    else { 
     NSLog(@"End the view before running it"); 
    } 
} 

Como se puede ver, es necesario crear un EAGLView, adjunte un director a ella, y luego simplemente añadir que la vista a la vista jerarquía.

+0

Gran! Pero, ¿y si estoy en un controlador tabBar y cada controlador contiene un EAGLView, o tengo múltiples EAGLViews dentro de mi UIView? ¿El director mantiene un registro de TODOS los puntos de vista? Y, ¿puedo ejecutar algunas de las escenas y detener otras? Gracias. – Mustafa

+0

Lo que puede hacer es, después de cambiar a otra pestaña, llamar a '[director setOpenGLView: glview];' en la vista principal de la pestaña, y establecer la escena allí. Utilizará varios 'EAGLView's pero solo un' CCDirector'. – pgb

+0

¿tiene un enlace a esta demostración? parece que no puedo encontrarlo –