그래서 저는 스프라이트 키트 게임을 가지고 있고 그것에 음악을 추가하고 있습니다. 음악 볼륨을 제어하기 위해 슬라이더를 추가하기 전까지는 음악이 정상적으로 작동했습니다. 그래서 이것을하기 위해 "옵션 메뉴"를위한 또 다른 장면을 추가했습니다. 문제는 실제 게임 인터페이스로 이동하기 위해 장면을 종료하면 게임 음악이 완전히 사라진다는 것입니다. 또한 실제 슬라이더를 제거하는 데 문제가 있습니다. 옵션 장면에 대한 코드가 아래에 나열됩니다. (아직 작성 중입니다.) 코드가 엉망인 경우이 웹 사이트를 처음 사용하므로 미안합니다.스프라이트 키트 장면을 통한 음악?
@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
전적으로 위와 같이 backGroundMusic 자체에 대리인을 삭제하려고했습니다. 음악은 장면이 종료되자 마자 취소되었습니다. 동일한 코드를 사용하여 ViewController 클래스에서 재생 될 때 음악이 작동하고있었습니다. 비록 내가 그것을 검색하고 난 그 볼 컨트롤러 이동않았기 때문에 볼 컨트롤러 실제로 UISlider 추가 할 수 있다고 생각하지 않습니다. backGroundMusic을 다른 것에 위임해야합니까? 또한 Slider Subview를 제거하려면 어떻게해야합니까? 나는 시도 할 때 오류가 계속 발생합니다. – user3736137