我有一個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中的所有拉伸和調整大小的東西,但沒有用(我只是猜測)。
我很感謝任何人的幫助或想法。
+1使用_thusly_。對不起,我不能幫助實際的問題,雖然:( – deanWombourne 2011-02-17 19:14:07