2011-02-17 25 views
0

我有一个Box2D世界,它工作的很棒。我在一个简单的iOS游戏中使用它,在这个游戏中用户倾斜设备,当某个物体与另一个物体发生碰撞时,推动屏幕周围的物体。当加载另一个视图时Box2D刚性物体变形

当它在测试控制器中被埋在我的应用程序中几层时,它工作正常。我从菜单屏幕上的一个按钮调用它,游戏屏幕上的一个按钮将通过popToViewController返回菜单。但是一旦我看到它有多出色,我意识到我希望游戏成为用户看到的第一个屏幕(在默认加载图像之后)。所以现在这个应用程序加载了这个世界,并且游戏没有任何问题。

直到用户点击菜单按钮才能进入菜单屏幕 - 另一个视图控制器。菜单控制器加载正常,并且所有事情都按预期工作。但是当一个点击后退按钮返回到游戏/世界时,图像/物体会失真。当菜单控制器被推到导航堆栈上时,失真的变化取决于它们发生的旋转方式。有时它们会变大,有时会变得潮湿。

加载菜单控制器时,我尝试暂停世界(通过不调用步骤),但没有帮助图像失真问题。

这里就是菜单控制器被加载代码:

//unhide the navbar for the next screen 
    [self.navigationController setNavigationBarHidden:NO]; 

    MenuViewController *mvc = [[MenuViewController alloc]init]; 

    [self.navigationController pushViewController:mvc animated:YES]; 

    [mvc release]; 

这里是游戏的视图控制器获取由应用程序代理应用程序didFinishLaunchingWithOptions加载:

B2DViewController *b2dvc = [[B2DViewController alloc]init]; 

    UINavigationController *navcon = [[UINavigationController alloc] init]; 

    [navcon setNavigationBarHidden:YES]; 

    [navcon pushViewController:b2dvc animated:NO]; 
    [window addSubview:navcon.view]; 

    [b2dvc release]; 

    [window makeKeyAndVisible]; 

的图像来通过xib进入。一个是按钮,一个是imageView。都被添加到这些正是如此配置的动态机构:

b2PolygonShape dynamicBox; 
    dynamicBox.SetAsBox(boxDimensions.x, boxDimensions.y); 

... 

    b2FixtureDef fixtureDef; 
    fixtureDef.shape = &dynamicBox; 
    fixtureDef.density = 3.0f; 
    fixtureDef.friction = 0.3f; 
    fixtureDef.restitution = 0.5f; 

    ... 

我试图隐藏所有的子视图,但是,你可能会怀疑,认为只有把它们藏在视图中,而不是从扭曲的力量。我也关闭了IB中的所有拉伸和调整大小的东西,但没有用(我只是猜测)。

我很感谢任何人的帮助或想法。

+0

+1使用_thusly_。对不起,我不能帮助实际的问题,虽然:( – deanWombourne 2011-02-17 19:14:07

回答

0

不是将菜单控制器推到导航控制器上,而是将导航控制器添加到视图中,而是使用了presentModalViewController:animated。这并没有解决问题,但一旦我注释掉[self.navigationController setNavigationBarHidden:NO];问题解决了。

//unhide the navbar for the next screen 
//[self.navigationController setNavigationBarHidden:NO]; 

MenuViewController *mvc = [[MenuViewController alloc]init]; 

[self presentModalViewController:(UIViewController *)mvc animated:YES]; 
[mvc release]; 

看来NavigationBar是粉碎图像?我想进一步研究这一点,因为导航栏可以是一个方便的东西,但我现在没有时间,这可能意味着我永远不会接近它。

相关问题