【发布时间】:2014-07-12 15:20:37
【问题描述】:
我有一个使用 sprite kit 制作的游戏,我添加了一个 30 秒的音频文件,作为我使用 av 音频播放器的游戏的背景音乐无限循环。当游戏从某个状态切换时,我想停止并从我的场景文件开始播放音乐。
这是我的视图 controller.m 文件,我在其中添加了停止音乐方法
@implementation ViewController
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
NSError *error;
NSURL *backgroundMusicUrl = [[NSBundle mainBundle] URLForResource:@"game" withExtension:@"wav"];
_backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:backgroundMusicUrl error:&error];
_backgroundMusicPlayer.numberOfLoops = -1;
[_backgroundMusicPlayer prepareToPlay];
[_backgroundMusicPlayer play];
SKView * skView = (SKView *)self.view;
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
}
-(void)stopMusic
{
[_backgroundMusicPlayer pause];
}
然后在我的 scene.m 文件中,我尝试调用 stop music 方法,但是背景音乐并没有停止播放。
-(void)switchToTutorial{
[[ViewController alloc] stopMusic];
_gameState = GameStateTutorial;
//remove unwatnted nodes
for (int i = 0; i < _mainMenu.count; i++)
{
SKSpriteNode *chosenNode = [_mainMenu objectAtIndex:i];
[chosenNode removeFromParent];
}
for (int i = 0; i < _mainMenuButtons.count; i++)
{
SKSpriteNode *chosenNode = [_mainMenuButtons objectAtIndex:i];
[chosenNode removeFromParent];
}
[self setupTutorial];
}
【问题讨论】:
-
见stackoverflow.com/questions/5764890/…你需要创建一个额外的属性,这样你就可以从任何地方访问音乐
标签: ios objective-c audio