2009-02-03 4 views
7

Я пытаюсь создать приложение iPhone с помощью Cocos2d.But я использовал четыре типа классов как bellow-Как мы можем показать UIViewController и UIView с помощью Cocos2d?

@interface MenuScene : Scene {} 

@end 
@interface FlipView : UIImageView 
{ 
    CGPoint startTouchPosition; 
    NSString *dirString; 
    UIImageView *firstPieceView; 
    UIImageView *secondPieceView; 

} 
@end 

@interface HelloController : UIViewController 
@end 


@interface MenuLayer: Layer{ 
     Todo *todo; 
     Menu * menu; 
     sqlite3 *database; 
     NSMutableArray *todos; 
    NSString *dirString; 
    CGPoint startTouchPosition; 
} 
@property (nonatomic, retain) NSMutableArray *todos; 
-(void) button1: (id)sender; 
-(void) button2: (id)sender; 
-(void) black_jack: (id)sender; 
@end 

но как я могу показать FlipView и класс HelloController через класс MenuLayer.

ответ

2

Очень сложно ответить на этот вопрос только из кода, но я думаю, вам нужно вернуться и немного почитать о дизайне UIKit и программировании cocos2d.

HelloController - контроллер просмотра - вы не можете «показать» его. Контроллер представления - это класс, который отвечает на сообщения из представления и управляет данными, которые он отображает из модели.

FlipView - это ImageView, который является подклассом UIView. Для того, чтобы иметь UIKit визуализации изображения, вам нужно добавить его к другой точке зрения, используя [UIView addSubView:...]

Вот что я думаю, что вы хотите сделать:

  1. Пункта меню получает сенсорное событие. Он сигнализирует:
  2. контроллер вида, который
  3. добавляет UIImage к главному представлению

Как я, хотя сказал, что это очень общий вопрос, и я действительно думаю, что вы должны вернуться к документации и подумайте о своем дизайне. Документы Apple хороши, и на рынке сейчас есть хорошие книги для iPhone.

20

Если вы спрашиваете, как прикрепить взгляды UIKit и такое проект cocos2d-iphone, вы просто должны сделать это как:

[[[Director sharedDirector] window] addSubview:myView]; 

Обновлено Кокосовые 0,7 и теперь это:

[[[Director sharedDirector] openGLView] addSubview:myView]; 

И в Кокосовые 0.99:

[[[CCDirector sharedDirector] openGLView] addSubview:myView]; 

И в Кокосовые 2.0

[[[CCDirector sharedDirector] view] addSubview:myView]; 
+0

Что нужно сделать, чтобы удалить myView. Когда я нажимаю кнопку в текущей сцене, я перехожу к следующей сцене. Но добавленный myView все еще появляется в этой сцене. Спасибо. –

+0

Извините, я не проверил, прежде чем спрашивать. Я понял. Я добавил следующий код в селектор для кнопки. для (id sv in subviews) \t { \t [((UIView *) sv) removeFromSuperview]; \t [sv release]; \t} –

+0

следующий вопрос. возможно ли пробудить UIView от nib? – heximal

Смежные вопросы