Chapter 12 小星星

除了要考虑小星星的速度以及对应的不同图片,添加小星星的方式和添加背景区别不大。

打开 StarsSmall.swift 并添加如下的代码到 init 方法中:

var signOrder = AstrologicalSignProvider.sharedInstance.order
contentSize = CGSizeMake(frame.size.width * (1.0 + CGFloat(signOrder.count) * gapBetweenSigns), 1.0)
signOrder.append(signOrder[0])

接着,创建一个 for 循环来添加所有的小星星,这些小星星的位置是从 provider 里获取的。代码如下:

// 将所有的小星星添加到视图中
for i in 0..<signOrder.count {
    // 计算偏移量
    let dx = Double(i) * Double(frame.size.width * speed * gapBetweenSigns)
    // 创建一个变换
    let t = Transform.makeTranslation(Vector(x: Double(center.x) + dx, y: Double(center.y), z: 0))
    // 获取当前的符号
    if let sign = AstrologicalSignProvider.sharedInstance.get(signOrder[i]) {
        // 每个点创建一个小星星
        for point in sign.small {
            let img = Image("6smallStar")!
            var p = point
            p.transform(t)
            img.center = p
            add(img)
        }
    }
}

简单吧。

SmallStars.swift 完整的代码可以在这里下载。

1. 测试之

通过工程中 WorkSpace 以下的代码来检查小星星的方向:

canvas.backgroundColor = COSMOSbkgd
let smallStars = StarsSmall(frame: view.frame, speed: 1.0)
canvas.add(smallStars)

背景需要深色的,因为图片本身是白色的,不然的话就看不清楚了。

results matching ""

    No results matching ""