2011-01-30 19 views
0

ユーザーがホームボタンを押したときにゲームを一時停止したいと思いますが、失敗します。ここに私がしたことがあります。iphone sdkのホームボタンを押したときにゲームを一時停止する

  1. Iはgamestate呼ばappdelegateでNSInteger変数を宣言し、変数を更新するために、2つの定数(kGameStateRunningとkGameStatePaused)を定義します。

  2. ときのviewDidLoad私mainGameViewControllerのために、私は設定gamestate = kGameStateRunning

  3. ので、ユーザはpauseViewがちょうどユーザーが見るもののように、現在のmainGameViewControllerに追加され、ホームボタンを押したときに、私はここで行うありたいもの私が作成したゲームプレイ中に一時停止ボタンを押すと、

私はそれをappdelegate関数で実装し、それを使ってviewControllerのpauseGameメソッドを呼び出します。 NSLogは、ホームボタンが押されたことを示していますが、プログラムで作成したポーズビューを追加していないようです。これは、appDelegateでこれを呼び出すと[self.view addSubView:pauseView]を理解できないためですか?ご協力ありがとうございました。ここにコードがあります。

- (void)applicationWillResignActive:(UIApplication *)application { 
    if (gameState == kGameStateRunning) { 
     [self.viewController pauseGame]; 
     NSLog(@"home button pressed"); 
    } 
    else if (gameState == kGameStatePaused) { 
     NSLog(@"not running"); 

-(void)pauseGame{ 
//pause all functions 
NSLog(@"pause"); 
[gameTimer invalidate]; 
[hHpointer.packageSpawningTime invalidate]; 

for (Package *package in hHpointer.packageArray) { 
    [package.timeSinceSpawn invalidate]; 
} 

//create the view 
pauseView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 480, 320)]; 
[pauseView setBackgroundColor:[UIColor grayColor]]; 
pauseView.alpha = 0.5; 
[self.view addSubview:pauseView]; 
    } 

答えて

1

これをアプリケーションデリゲートから呼び出す場合は、ビューではなくウィンドウへのポインタがあります。

そのように、あなたが呼び出す必要があります:

アプリが最初からやり直し[self.window addSubview:pauseView];- (void)applicationDidBecomeActive:メソッドを実装してください。

ビューを削除して[pauseView removeFromSuperview]を削除します。

こちらがお役に立てば幸いです。

+0

pauseView.frame = CGRectMake(0,0,480,320)でpauseViewが作成されたと仮定しても、ウィンドウが正しく覆われていないようです。ウィンドウの向きをどのように傾けますか? – Jin

関連する問題