如何使用Cocos2d来显示UIViewController和UIView?

7

我正在尝试使用Cocos2d构建iPhone应用程序。但是我已经使用了以下四种类型的类:

@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

但是我怎么能通过MenuLayer类展示FlipView和HelloController类呢?
2个回答

20

如果您想要将UIKit视图等内容附加到cocos2d-iphone项目中,只需像这样操作:

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

升级到cocos 0.7后,现在是这样的:

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

在Cocos 0.99中:

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

在Cocos 2.0中

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

我该怎么做才能移除myView?当我在当前场景中按下按钮后,我会进入下一个场景。但是,添加的myView仍然出现在那个场景中。谢谢。 - srikanth rongali
抱歉在提问前我没有好好检查。我明白了。我在按钮的选择器中添加了以下代码。for (id sv in subviews) { [((UIView *)sv) removeFromSuperview]; [sv release]; } - srikanth rongali
还有一个问题。从nib文件中唤醒UIView是否可能? - heximal
1
目前版本2中,[[[CCDirector sharedDirector] view] addSubview:myView]; - Nik

2
这个问题很难仅从代码中回答,但我认为您需要回去阅读一些关于UIKit设计和cocos2d编程的内容。
HelloController是一个视图控制器 - 您不能“显示”它。视图控制器是一个类,它会响应来自视图的消息,并从模型控制其显示的数据。
FlipView是一个ImageView,是UIView的子类。要让UIKit渲染此图像,您需要使用 [UIView addSubView:...] 将其添加到另一个视图中。
这是我认为您想要做的事情:
1.菜单项接收触摸事件。它向以下方面发出信号: 2.视图控制器 3.将UIImage添加到主视图
就像我说的那样,这是一个非常普遍的问题,我真的认为您应该返回文档并考虑您的设计。苹果的文档很好,现在市场上也有一些不错的iPhone书籍。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接