2011-02-17 27 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是粉碎圖像?我想進一步研究這一點,因爲導航欄可以是一個方便的東西,但我現在沒有時間,這可能意味着我永遠不會接近它。

相關問題