1

所以我有一个精灵套件游戏,我正在向它添加音乐。音乐效果很好,直到我决定添加一个滑块来控制音乐音量。为此,我为“选项菜单”添加了另一个场景。问题是,当我退出场景进入实际游戏界面时,游戏音乐完全消失了。此外,我无法移除实际的滑块。我的选项场景代码将在下面列出。(仍在制作中)我是这个网站的新手,所以如果代码搞砸了,我很抱歉。

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

@implementation 选项场景

-(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
4

1 回答 1

0

我想如果你不将背景音乐委托给自己,这个问题就会得到解决。此外,在播放音乐之前,运行 a[backGroundMusic prepareToPlay];会提高性能。

这是教程的链接,在页面上搜索“音乐”以查看他是如何做到的。

雷·温德利希

于 2014-06-13T03:09:05.330 回答