Grand Central Dispatch 寻找不同的方法
Grand Central Dispatch Looking for a different approach
func RunAfterDelay(delay: NSTimeInterval, block: dispatch_block_t) {
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC)))
dispatch_after(time, dispatch_get_main_queue(), block)
}
在我的游戏场景的助手 class 中调用此方法。我正在关注一个 TUT,是的,我试图在当前项目中实现助手 class,我是编程新手。我也是 GCD 的新手,我已经阅读了文档并且知道它有如此大的用途....
在我的游戏场景中,这里使用的是:
RunAfterDelay(RandomDouble(min: minDelay, max: maxDelay)) { [unowned self] in
self.createEnemy()
同样的场景也用在这里:
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
// if(self.backgroundMusic.playing){
我找到了声音、BG 音乐和音效的解决方案,方法是创建一个全局 swift 文件,使用枚举、案例和 public 函数来处理音乐等。它看起来像这样我相信 Swift 的每个新手都对这个 运行 感兴趣:RW tuts
public class SKTAudio {
public var backgroundMusicPlayer: AVAudioPlayer?
public var soundEffectPlayer: AVAudioPlayer?
public class func sharedInstance() -> SKTAudio {
return SKTAudioInstance
如果有更好的选择,我正在寻找一种不同的方法,因为它目前正在耗尽我的 CPU,经过几次运行后,它变得非常慢。那是一个不同的问题。我更关心寻找一种比列出的方法更好的方法。
这是一款利用 SpriteKit 和 UIKit 的游戏(出于 UI 原因)我放弃了它,现在我严格使用 SpriteKit。
为什么不在游戏场景中使用计时器来生成东西?或者更好的是,您可以使用 update
函数来执行这样的基于时间的游戏逻辑。这个答案有很好的解释:SpriteKit's Update Function: time vs. framerate
这些代码片段并没有真正说明您遇到 CPU 问题的原因。你 运行 在模拟器上吗?您也可以在另一个线程上尝试 运行 您的块。
func runAfterDelay(selector: Selector, object: AnyObject?, delay: NSTimeInterval) {
let delay = delay * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue(), {
NSThread.detachNewThreadSelector(selector, toTarget:self, withObject: object)
})
}
func RunAfterDelay(delay: NSTimeInterval, block: dispatch_block_t) {
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC)))
dispatch_after(time, dispatch_get_main_queue(), block)
}
在我的游戏场景的助手 class 中调用此方法。我正在关注一个 TUT,是的,我试图在当前项目中实现助手 class,我是编程新手。我也是 GCD 的新手,我已经阅读了文档并且知道它有如此大的用途....
在我的游戏场景中,这里使用的是:
RunAfterDelay(RandomDouble(min: minDelay, max: maxDelay)) { [unowned self] in
self.createEnemy()
同样的场景也用在这里:
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
// if(self.backgroundMusic.playing){
我找到了声音、BG 音乐和音效的解决方案,方法是创建一个全局 swift 文件,使用枚举、案例和 public 函数来处理音乐等。它看起来像这样我相信 Swift 的每个新手都对这个 运行 感兴趣:RW tuts
public class SKTAudio {
public var backgroundMusicPlayer: AVAudioPlayer?
public var soundEffectPlayer: AVAudioPlayer?
public class func sharedInstance() -> SKTAudio {
return SKTAudioInstance
如果有更好的选择,我正在寻找一种不同的方法,因为它目前正在耗尽我的 CPU,经过几次运行后,它变得非常慢。那是一个不同的问题。我更关心寻找一种比列出的方法更好的方法。
这是一款利用 SpriteKit 和 UIKit 的游戏(出于 UI 原因)我放弃了它,现在我严格使用 SpriteKit。
为什么不在游戏场景中使用计时器来生成东西?或者更好的是,您可以使用 update
函数来执行这样的基于时间的游戏逻辑。这个答案有很好的解释:SpriteKit's Update Function: time vs. framerate
这些代码片段并没有真正说明您遇到 CPU 问题的原因。你 运行 在模拟器上吗?您也可以在另一个线程上尝试 运行 您的块。
func runAfterDelay(selector: Selector, object: AnyObject?, delay: NSTimeInterval) {
let delay = delay * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue(), {
NSThread.detachNewThreadSelector(selector, toTarget:self, withObject: object)
})
}