我主要使用JavaScript进行编码,但是我必须使用Swift编写项目。因此,为了加快学习速度,我希望编写与JavaScript编写方式非常相似的Swift代码。
在JavaScript中,我有一个方法draw()
,我每毫秒调用一次该方法。例如,在draw()
中,我可以在画布上绘制一个Square(场景)。然后,如果我增加正方形的X位置,则再次调用draw()
时,正方形将移动。对图像也可以做到这一点,因此,借助这种基本逻辑,就可以构建游戏。
现在,在Swift中,我尝试做类似的事情,制作类似于draw()
的方法,并一遍又一遍地调用该方法。但是,该动画确实是断断续续的,如果我用JavaScript做同样的事情,它看起来还不错。
import UIKit
import PlaygroundSupport
import Foundation
public class sim : UIView{
var circleX = 100;
var circleY = 135;
public init(){
super.init(frame: CGRect(x: 0, y: 0, width: 500, height: 300))
self.backgroundColor = #colorLiteral(red: 0.9428111294, green: 0.9428111294, blue: 0.9428111294, alpha: 1)
var simulationTimer = Timer.scheduledTimer(timeInterval: 0.00001, target: self, selector: #selector(drawScene), userInfo: nil, repeats: true)
}
@objc func drawScene(){
let background = UIView(frame: CGRect(x: 0, y: 0, width: 500, height: 300))
background.backgroundColor = #colorLiteral(red: 0.9428111294, green: 0.9428111294, blue: 0.9428111294, alpha: 1)
self.addSubview(background)
circleX+=5
let circle = UIView(frame: CGRect(x: circleX, y: circleY, width: 30, height: 30))
circle.backgroundColor = #colorLiteral(red: 0.4633018092, green: 0.4633018092, blue: 0.4633018092, alpha: 1)
circle.layer.cornerRadius = 15
circle.layer.borderWidth = 3.0
circle.layer.borderColor = #colorLiteral(red: 0.2512571216, green: 0.2528424561, blue: 0.2970899045, alpha: 1)
self.addSubview(circle)
}
public required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
PlaygroundPage.current.liveView = sim()
因此,我使用了Playgrounds,这就是为什么我导入了Playground Support的原因。我做了一个类sim,其中有drawScene函数,在该函数中,我首先在整个场景上绘制一个矩形,然后绘制一个圆。再次调用该矩形时,它会画在上一个圆上。并画出一个新的圆圈。但是,正如我提到的那样,这看起来确实很断断续续。我将如何使其顺畅。