2014-06-13 3 views
1

그래서 저는 스프라이트 키트 게임을 가지고 있고 그것에 음악을 추가하고 있습니다. 음악 볼륨을 제어하기 위해 슬라이더를 추가하기 전까지는 음악이 정상적으로 작동했습니다. 그래서 이것을하기 위해 "옵션 메뉴"를위한 또 다른 장면을 추가했습니다. 문제는 실제 게임 인터페이스로 이동하기 위해 장면을 종료하면 게임 음악이 완전히 사라진다는 것입니다. 또한 실제 슬라이더를 제거하는 데 문제가 있습니다. 옵션 장면에 대한 코드가 아래에 나열됩니다. (아직 작성 중입니다.) 코드가 엉망인 경우이 웹 사이트를 처음 사용하므로 미안합니다.스프라이트 키트 장면을 통한 음악?

@interface OptionsScene() 
@property BOOL contentCreated; 
@end 

-(id)initWithSize:(CGSize)size 
{ 
if (self = [super initWithSize:size]) { 
    self.anchorPoint = CGPointMake(0.5, 0.5); 

} 
return self; 
} 

-(void)didMoveToView:(SKView *)view 
{ 
    NSString *music = [[NSBundle mainBundle] pathForResource:@"InAmberClad" ofType:@"mp3"]; 
    backGroundMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:music] error:NULL]; 
    backGroundMusic.delegate = self; 
    backGroundMusic.numberOfLoops = -1; 
    [backGroundMusic play]; 



CGRect frame = CGRectMake(200, 300, 150, 10); 
_volumeSlider = [[UISlider alloc] initWithFrame:frame]; 
[_volumeSlider addTarget:self action:@selector(volumeControl) forControlEvents:UIControlEventValueChanged]; 
_volumeSlider.maximumValue = 1; 
_volumeSlider.minimumValue = 0; 
_volumeSlider.continuous = YES; 
[_volumeSlider setValue:0.5]; 
[_volumeSlider setBackgroundColor:[UIColor blackColor]]; 

if (!self.contentCreated) { 
    [self.view addSubview:_volumeSlider]; 
    [self createContents]; 
    self.contentCreated = YES; 
} 
} 

-(void)createContents 
{ 
    self.scaleMode = SKSceneScaleModeAspectFill; 
} 

-(void)volumeControl 
{ 
[backGroundMusic setVolume:_volumeSlider.value]; 
} 

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
SKScene *options = [[MyScene alloc] initWithSize:self.size]; 
[self.view presentScene:options]; 


} 

@end 

답변

0

당신이 자기에 backgroundMusic을 위임하지 않으면 내가 생각 @implementation의 OptionsScene,이 문제는 해결 될 것이다. 또한 음악을 재생하기 전에 [backGroundMusic prepareToPlay];을 실행하면 성능이 향상됩니다.

자습서에 대한 링크입니다. "음악"페이지 검색에서 그가 어떻게했는지 볼 수 있습니다.

Ray Wenderlich

+0

전적으로 위와 같이 backGroundMusic 자체에 대리인을 삭제하려고했습니다. 음악은 장면이 종료되자 마자 취소되었습니다. 동일한 코드를 사용하여 ViewController 클래스에서 재생 될 때 음악이 작동하고있었습니다. 비록 내가 그것을 검색하고 난 그 볼 컨트롤러 이동않았기 때문에 볼 컨트롤러 실제로 UISlider 추가 할 수 있다고 생각하지 않습니다. backGroundMusic을 다른 것에 위임해야합니까? 또한 Slider Subview를 제거하려면 어떻게해야합니까? 나는 시도 할 때 오류가 계속 발생합니다. – user3736137

관련 문제