游戏循环未在swift 3中运行
我想在swift 3中创建一个游戏循环。我可以让代码在没有错误的情况下运行,但是循环没有运行。我已经尝试移动到我声明更新程序的地方,但这似乎只会导致错误 代码:游戏循环未在swift 3中运行,swift,swift3,core-graphics,Swift,Swift3,Core Graphics,我想在swift 3中创建一个游戏循环。我可以让代码在没有错误的情况下运行,但是循环没有运行。我已经尝试移动到我声明更新程序的地方,但这似乎只会导致错误 代码: import UIKit import QuartzCore class Circle: UIView { @IBOutlet var updater: CADisplayLink! var x: CGFloat = 0 var y: CGFloat = 0 var b: Board!
import UIKit
import QuartzCore
class Circle: UIView {
@IBOutlet var updater: CADisplayLink!
var x: CGFloat = 0
var y: CGFloat = 0
var b: Board!
override func draw(_ rect: CGRect) {
UIColor.black.set()
let updater = CADisplayLink(target: self, selector: #selector(Circle.gameLoop))
updater.add(to: RunLoop.current, forMode: RunLoopMode.commonModes)
updater.preferredFramesPerSecond = 1
b = Board(frameWidth: self.frame.width)
b.createGrid().stroke()
}
func gameLoop(){
b.moveDown(x: x, y: y).stroke()
y = y + 1
}
}
我没有为Board添加代码,但是我已经测试过了,它运行得很好。如果你想让我添加它,请给我留言,我会的。但是,我认为这对解决方案没有好处。您确定gameLoop没有运行吗?您是否尝试记录它?在进一步的测试中,我相当确定循环正在运行。问题可能在于gameLoop中的
.stroke
。我想它不知道该拿什么作依据。我不是这方面的专家,但在某个视图子类的draw(:)
方法中创建CADisplayLink
似乎真的很奇怪,因为它不存储在任何地方的属性中。另外,您正在那里创建一个图板
,但不要将其添加到任何superview中,这样它就不会被绘制。我猜你是在尝试创建一个游戏,但这是一个非常奇怪的UIKit用法。你看过SpriteKit吗?它可能更适合你的目标。