代码之家  ›  专栏  ›  技术社区  ›  emenegro

在OpenGL ES视图和uikit视图控制器之间切换

  •  2
  • emenegro  · 技术社区  · 15 年前

    这是我的问题。

    我正在用OpenGLES开发iPhone上的游戏。我开始使用Xcode模板OpenGLES应用程序开发,使用一个eaglview等。

    我的菜单视图和游戏视图使用相同的OGL视图,但现在我想添加分数排名,所以我需要一个键盘和一个文本字段来写名字,以及一些标签或表格视图来显示排名。

    更新 :嗯,我认为最好的解决方案是让我当前的GLVIEW使用另一个uikit视图,我将在其中放置分数排名并进行切换。

    我有一本新闻书 开始iPhone开发 我将遵循关于多重观点的章节。我想在两个uiviewcontroller之间切换,但当我要在游戏中进行更改时…glview不是uiviewcontroller,它是uiview,所以我迷路了。

    有人能帮我吗?:

    非常感谢。

    2 回复  |  直到 15 年前
        1
  •  2
  •   emenegro    15 年前

    嗯,我想我解决了这个问题,所以我和你分享解决方案。

    我从书中的多视图示例开始:三个XIB(主窗口和我们切换的两个视图)、应用程序。委托,每个视图有两个视图控制器和一个在视图之间切换的根视图控制器。

    我将eaglview类和渲染器添加到此项目中,并将eaglview上的initwithcoder方法更改为initwithframe:

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

    然后,在我的根视图控制器中,当我点击一个按钮时,我添加了一个ibaction:

    - (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];
    }
    

    就这些。很简单,而且效果很好。也许它需要一些优化,但这是一个很好的起点。

    所以,现在我的得分排名是:D

        2
  •  0
  •   Stefan Arentz    15 年前

    您可以简单地将一个普通的视图控制器推到OpenGL视图(控制器)的顶部,以显示分数排名对话框。例如, presentModalViewController:animated: .