大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)
在新的Xcode中之前可以正常运行的SKAudioNode代码貌似会有一些小问题,这发生在场景转换后.
比如游戏主场景GameScene在New Game后会创建自身一个新的实例然后转换过去:
let newScene = GameScene(fileNamed: "GameScene") newScene!.scaleMode = .AspectFill let reveal = SKTransition.flipHorizontalWithDuration(0.5) self.view?.presentScene(newScene!, transition: reveal)
- 1
- 2
- 3
- 4
- 5
注意其中用了一个SKTransition的实例用来产生过渡效果,过渡时间为0.5秒.测试时发现如果在场景加载方法中使用SKAudioNode播放声音则只能播放0.5秒的时间,然后就会无声.如果过渡时间发生变化,则SKAudioNode播放时间也发生变化.不管如何,只要完成过渡,声音就消失!
开始以为是旧场景中需要做清除操作,于是写了如下的方法:
override func willMoveFromView(view: SKView) { if let music = bgMusic{ music.paused = true music.removeFromParent() bgMusic = nil } if let music = bgMusicAlarm{ music.paused = true music.removeFromParent() bgMusicAlarm = nil } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
但是问题依旧.
遂将原来场景加载方法中播放声音做一个细微延时操作,就没有问题了,好神奇!
runAction(SKAction.waitForDuration(0.01),completion:{ self.playBgMusic("SpaceGame.caf") })
- 1
- 2
- 3
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow