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

iPhone,旋转+EagleView,旋转=

  •  2
  • randallmeadows  · 技术社区  · 16 年前

    …沮丧。我希望我的游戏只能在横向模式下运行。我已将适当的键/值添加到信息列表在启动时强制设备方向正确的文件。

    我现在正在尝试旋转OpenGL坐标空间以匹配设备的坐标空间。我在用我找到的代码 here ,但它不起作用。我的测试用例在中间画了一个正方形,用 全部的 在包含的代码中,我看不到任何绘图;如果我注释掉第二部分(仅设置GL\u投影矩阵模式),坐标系 做 似乎是正确的。但我也希望它能旋转。对于如何做到这一点,以及如何正确设置视图笔尖,我有点困惑。小费,谢谢?

    另外,在将来,我将用另一个UIView子类替换eagleview;这样做需要什么不同吗?

    谢谢! 兰迪

    1 回复  |  直到 9 年前
        1
  •  2
  •   Tyler Zale    15 年前

    你的plist设置正确。 现在确保所有视图控制器都具有以下功能:

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
    {
        return (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight) ? YES : NO;
    }
    

    没有它的儿童观会把事情搞得一团糟。

    另外,如果你有一个UINavigationController或类似的,你需要对它进行子类化并实现shouldautrotatetointerfaceOrientation,因为它本身就非常愚蠢,而且会默认为肖像并破坏东西。

    那么对于viewdidload

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        CGRect  rect = [[UIScreen mainScreen] bounds];
        rect.size.height = 320;
        rect.size.width = 480;
        rect.origin.x = 0;
        rect.origin.y = 0;
    
        glView = [[EAGLView alloc] initWithFrame:rect pixelFormat:GL_RGB565_OES depthFormat:GL_DEPTH_COMPONENT16_OES preserveBackbuffer:NO];
        [self.view addSubview: glView];
    
        [glView addSubview: minimapView];
         //etc...
    
    }