SpriteKit背景音乐的实现

Reading time ~1 minute

最近学习swift和SpriteKit,在处理背景音乐上遇到了一点问题,特此mark一下。

本来在游戏中,音效是使用SKAction来实现,于是乎最开始,我还是尝试使用SKAction来做背景音乐,可是却遇到了一点问题。

最开始的代码如下:

let playBGM = SKAction.playSoundFileNamed("background-music-aac.caf", waitForCompletion: true)
self.runAction(SKAction.repeatActionForever(playBGM))

意思很明确,一直重复播放这个Action,但是实际运行时却发现,在游戏过程中,背景音乐确实正常播放了,但是,当企图暂停场景或者切换场景的时候,却发现背景音乐并没有立即暂停,而似乎是只是暂停了循环,但还是会把当前这一段播放完。

思前想后也不知道该怎么解决,于是乎,最后换成使用AVAudioPlayer,首先给工程加入AVFoundation.framework框架,然后生成一个AVAudioPlayer对象:

var bgmPlayer = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("background-music-aac", ofType: "caf")!), error: nil)

然后开始播放:

self.bgmPlayer.numberOfLoops = -1
self.bgmPlayer.play()

最后可以通过bgmPlayer.pause()来暂停,bgmPlayer.stop()来终止播放。

挂载网络文件夹后网络故障时文件操作命令卡死

挂载 NFS 或者 Samba 的时候,经常会由于网络故障导致挂载好的链接断掉。此时如果尝试进行 ls、cd、df 等各种命令,只要与此目录沾上边,就会卡住。如果使用了类似 oh-my-zsh 这种配置的,只要在网络目录中,弹出命令提示符前就会直接卡住。这个时候第一反应就是...… Continue reading

路由折腾记 第四弹

Published on September 02, 2017