ゲームを開発していますが、メニュー画面、ゲーム画面、ゲーム オーバー画面など、複数のビューを切り替えたいと考えています。これを行う最も簡単な方法は何ですか? ビューが表示される順序が常に逆になるとは限らないため、ビュー スタックを使用する必要があるかどうかはわかりません。
2 に答える
「ビュースタック」とは、UINavigationController を意味すると思いますか?
最も簡単な方法は、すべてのビュー コントローラーへの参照をどこかに保持することです。たとえば、アプリケーション デリゲートを頻繁に使用する人がいる場合、アプリケーション デリゲートのクラス拡張は次のようになります。
@interface AppDelegate ()
@property (nonatomic, strong) UIViewController *rootViewController; //this is what gets set as the window's root VC
@property (nonatomic, strong) UIViewController *mainScreenViewController;
@property (nonatomic, strong) UIViewController *gameScreenViewController;
@property (nonatomic, strong) UIViewController *gameOverScreenViewController;
@end
rootViewController は、アプリの残りのコンテナ ビューを制御するだけであると仮定します (ただし、実際には、このすべてのロジックをルート ビュー コントローラに配置することで十分に機能するでしょう...)。
特定の画面を表示する必要があるときはいつでも、次のようなメソッドを呼び出します。
- (void)switchToViewController:(UIViewController *)viewController
{
[self.rootViewController.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];
[self.rootViewController.view addSubview:viewController.view];
}
次のように、より覚えやすい名前のメソッドを記述できるようになりました-switchToGameOverScreen
- (void)switchToGameOverScreen
{
[self switchToViewController:self.gameOverScreenViewController];
}
ビュー ナビゲーションのこの基本的なパターンは、sUITabBarController
によって制御されるビューに大まかに見られますUISegmentedControl
。
うまくいけば、これが役に立ちます!
Cocos-2dでゲームを開発している場合、シーン間の遷移は次のように実行できます。
[[CCDirector sharedDirector] replaceScene:[CCTransitionCrossFadetransitionWithDuration:0.5fシーン:[GameOverシーン]]];
ここで、GameOverは新しいシーンであり、トランジション効果の後に移動します。
cocos-2dには、あるシーンから別のシーンに移動するための他の多くのトランジションがあります。つまり、0です。CCTransitionCrossFade1. CCTransitionFade 2. CCTransitionFadeBL 3. CCTransitionFadeDown 4. CCTransitionFadeTR 5. CCTransitionFadeUp 6. CCTransitionFlipAngular 7. CCTransitionFlipX 8. CCTransitionFlipY 9. CCTransitionJumpZoom 11. CCTransitionMoveInL 12. CCTransitionMoveInT 13. CCTransitionPageTurn 14. CCTransitionRadialCCW 15. CCTransitionRotoZoom 16. CCTransitionShrinkGrow 17. CCTransitionSlideInB 18. CCTransitionSlideInL 19. CCTransitionSlideInR 20. CCTransitionSlideInT 21. CCTransitionSplitCols 22. CCTransition
ありがとう