首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从SKAction播放音乐

从SKAction播放音乐
EN

Stack Overflow用户
提问于 2015-03-17 06:32:06
回答 2查看 952关注 0票数 1

我正在尝试在我的游戏中添加背景音乐。我有一个开关,可以将音乐静音,当你再次轻敲它时,它就会播放音乐。这是播放音乐的代码

代码语言:javascript
运行
复制
 var backgroundMusic = SKAction.playSoundFileNamed("Background.wav", waitForCompletion: true)
 runAction(SKAction.repeatActionForever(backgroundMusic), withKey: "music")

我知道当您轻敲开关时,waitForCompletion应该设置为false以停止音乐。但是当我将它设置为false时,音乐不会播放,就像静态声音一样。

代码语言:javascript
运行
复制
self.removeActionForKey("music")

这是我用来停止音乐的代码。我想知道你是否可以将音乐静音,直到曲目结束,或者有另一种方法可以在SpriteKit中永远播放音乐。

EN

回答 2

Stack Overflow用户

发布于 2015-03-17 11:06:34

waitForCompletion:如果为true,则该action的播放时长与音频播放时长相同。如果为false,则认为action已立即完成。

waitForCompletion设置为false,将创建一个持续时间为0的操作。因此,“永远重复”操作将无法正常工作。

你必须等待它播放的持续时间,然后再从开始播放,让音乐循环。因此将waitForCompletion设置为true

代码语言:javascript
运行
复制
 var backgroundMusic = SKAction.playSoundFileNamed("Background.wav", waitForCompletion: true)

https://developer.apple.com/library/prerelease/ios/documentation/SpriteKit/Reference/SKAction_Ref/index.html#//apple_ref/occ/clm/SKAction/playSoundFileNamed:waitForCompletion

您可以使用removeActionForKey停止音乐。

票数 1
EN

Stack Overflow用户

发布于 2015-03-17 13:26:20

我推荐使用ObjectAL而不是Spritekit来播放背景音乐。下面是我用来播放背景音乐的一种简单方法,借用自SKUtils

代码语言:javascript
运行
复制
-(AVAudioPlayer*)setupSound:(NSString*)file volume:(float)volume{
    NSError *error;
    NSURL *url = [[NSBundle mainBundle] URLForResource:file withExtension:nil];
    AVAudioPlayer *s = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    s.numberOfLoops = -1;
    s.volume = volume;
    [s prepareToPlay];
    return s;
}

然后按如下方式调用它:

代码语言:javascript
运行
复制
...
AVAudioPlayer *bgplayer = [self setupSound:@"Background.wav" volume:1.0];
...
[bgplayer play];
...
[bgplayer pause];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29088158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档