2011-04-13 2 views
2

나는 게임을위한 일시 중지 메뉴를 만드는 가장 쉽고 "가장 똑똑한"방법이 어떤 방법인지 궁금합니다.아이폰 게임을위한 일시 중지 메뉴를 만드는 방법은 무엇입니까?

게임 일시 중지 메뉴를 만드는 데 많은 경험이 없으므로 필자가 직접 시도한 두 가지 방법을 시도했습니다. 이 텍스트 아래의 코드 또는 둘 다.

내가 시도한 첫 번째 방법은 게임 위에 검정색 투명 필터를 놓는 것이 었습니다. 일시 중지했습니다. 나는 내 uiimages에서 필터 아래에 만들어진 터치를 제외한 모든 것을 일시 중지하는 데 성공했습니다. 나는 현재의 것의 위에 새로운 uiimage를 두는 것이 그것 밑에있는 uiimages에 만들어진 접촉을 불가능하게 할 것이라고 생각했다. 나는 touchenabled = NO하지만 여전히 아무것도 시도하지 않았다.

-(IBAction)pause{ 

NSLog(@"pause"); 

[countdowntimer invalidate]; 

[self.rubin1 stopAnimating]; 
[self.rubin2 stopAnimating]; 
[self.rubin3 stopAnimating]; 

Pause.enabled = NO; 
music1.enabled = NO; 
music2.enabled = NO; 
sfx1.enabled = NO; 
sfx2.enabled = NO; 

//PauseMenu background 
UIImage *image1 = [UIImage imageNamed: @"filter2.png"]; 
pausefilter = [[[UIImageView alloc] initWithImage:image1] autorelease]; 
CGRect newFrame1 = pausefilter.frame; 
newFrame1 = CGRectMake(0,0, image1.size.width, image1.size.height); 
pausefilter.frame = newFrame1; 

[self.view addSubview:pausefilter]; 

[image1 release]; 

//Resume to Game 
button1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
button1.frame = CGRectMake(90, 146, 80, 18); 
[button1 setImage:[UIImage imageNamed:@"RESUME.png"] forState:UIControlStateNormal]; 
[button1 addTarget:self action:@selector(resume) forControlEvents:UIControlEventTouchUpInside]; 
[ self.view addSubview: button1 ]; 

//End Game 
button2 = [UIButton buttonWithType:UIButtonTypeCustom]; 
button2.frame = CGRectMake(260, 140, 180, 30); 
[button2 setImage:[UIImage imageNamed:@"EndGame.png"] forState:UIControlStateNormal]; 
[button2 addTarget:self action:@selector(end) forControlEvents:UIControlEventTouchUpInside]; 
[ self.view addSubview: button2 ]; 

[sharedSoundManager pausePlayingMusic]; 

}

내가 시도 두 번째 방법은 대신에 거기에서 설정을 사용하려면 주 메뉴에서 옵션 (스위치보기) 돌아 가야했지만, 난 곳으로 다시 재개 할 수 wasn't 나는 게임을 일시 중지했다. 대신 게임은 처음부터 다시 시작되었습니다.

-(IBAction)pause{ 

NSLog(@"pause"); 

[countdowntimer invalidate]; 

[self.rubin1 stopAnimating]; 
[self.rubin2 stopAnimating]; 
[self.rubin3 stopAnimating]; 

Pause.enabled = NO; 
music1.enabled = NO; 
music2.enabled = NO; 
sfx1.enabled = NO; 
sfx2.enabled = NO; 

menureturn = [[MainMenu alloc] initWithNibName:@"MainMenu" bundle: nil]; 
menureturn.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self presentModalViewController:menureturn animated: YES]; 

self.menureturn.Start.hidden = YES; 
self.menureturn.option.hidden = YES; 
self.menureturn.OptionsHeadtitle.hidden = NO; 
self.menureturn.HowToPlayHeadtitle.hidden = YES; 
self.menureturn.howtoplay.hidden = YES; 
self.menureturn.filter.hidden = NO; 
self.menureturn.music1.hidden = NO; 
self.menureturn.music2.hidden = YES; 
self.menureturn.SFXimage.hidden = NO; 
self.menureturn.Musicimage.hidden = NO; 
self.menureturn.sfx1.hidden = NO; 
self.menureturn.sfx2.hidden = YES; 
self.menureturn.credits.hidden = YES; 
self.menureturn.back.hidden = YES; 
self.menureturn.creditsinfo.hidden = YES; 
self.menureturn.resume.hidden = NO; 
self.menureturn.endgame.hidden = NO; 

[sharedSoundManager pausePlayingMusic]; 

}

신 일시 정지 메뉴를 만들거나 그냥 내가 이미 시도한 두 가지 중 하나를 다시 실행하는 방법에 대한 세 번째 옵션이 있습니까?

답변

3

당신은

같은 BOOL 변수를 가질 수있다) 당신이 할당 일시 정지하지 실행하여 예 게임을 할 때

BOOL 지금

을 isGamePaused

isGamePaused = NO;

일시 정지하는 동안

isGamePaused = YES; (! isGamePaused)

희망이

+0

이 방법으로 손을 뗄 수 있습니까? :) – iphonedevonthemake

+0

을 만져도 비슷한 개념을 확인할 수 있습니다. 같은 조건을 확인하고 게임이 일시 중지 된 경우 무시하는 것보다 다른 행동을 취하는 경우. –

+0

터치 방법에서 의미합니까? – iphonedevonthemake

0

이벤트를 사용하지 않도록 설정하는 가장 좋은 방법은 일시 중지 메뉴에서 첫 번째 응답자가되고 모든 이벤트를 수신하는 새 요소를 만드는 것입니다. 그래서 아무것도 게임의 인터페이스에 도달 할 수 없다;

+0

을하는 데 도움이 내가했던 생각처럼 애니메이션이나 뭔가를 재생하는 동안 {ProceedAnimation} 경우

이제

같은 조건을 사용할 수 있습니다 필터와 두 개의 버튼을 뷰에 추가하면 :) – iphonedevonthemake

+0

네,하지만 필터로 말해야 만 모든 이벤트를 잡을 수 있습니다;) 그래서 UIResponder에서 해당 함수를 다시 구현하십시오. 첫 번째 응답 개체에 전파되지 않습니다. Jennis의 방법은 simili-global 변수에 대처해야만해도 나쁘지 않습니다. – Geoffroy

+0

멍청한 놈처럼 들리지만 유감스럽게도 죄송합니다. 이 코드에 uiresponder를 사용하여 회상하지 마십시오 (그 경우는 ... 죄송합니다! :)). 나는 동의한다. Jennis'way도 나쁘지 않다. 그것은 여러 솔루션을 가지고 좋은 것입니다.;) – iphonedevonthemake

관련 문제