2017-10-13 146 views
2

我想從離屏位置移動節點並將它們跨X軸間隔排列。節點已經創建並存儲在一個數組中。我有下面的代碼來做到這一點。但是,所有節點都在同一時間移動。當前節點處於新位置時,我希望它們連續移動。我嘗試改變等待操作的持續時間,但它不起作用。嘗試在一個循環中一次移動一個SKShapeNodes

感謝

var shapeNodes: [SKShapeNode] = [SKShapeNode]() 
    let w = (size.width + size.height) * 0.05 

    for _ in 1...5 { 
     let s = SKShapeNode(rectOf: CGSize(width: w, height: w), cornerRadius: w * 0.3) 
     s.position = CGPoint(x: frame.midX, y: frame.maxY + 75) 
     s.zPosition = 3 
     s.fillColor = UIColor.cyan 
     shapeNodes.append(s) 
     addChild(s) 
    } 

    var posX: CGFloat = 0.0 
    for n in shapeNodes { 
     let m = SKAction.moveBy(x: posX, y: -300, duration: 2.0) 
     m.timingMode = .easeIn 
     let w = SKAction.wait(forDuration: 2.0) 
     let seq = SKAction.sequence([ m, w ]) 
     n.run(seq) 
     posX += 125 
    } 

回答

2

給每個節點用等於以往所有節點的動畫時間的持續時間的等待行動。該邏輯非常類似於您的邏輯與變量posX

var posX: CGFloat = 0.0 
var waitDuration: CGFloat = 0 
for n in shapeNodes { 
    let duration = 2 
    let m = SKAction.moveBy(x: posX, y: -300, duration: duration) 
    m.timingMode = .easeIn 
    let w = SKAction.wait(forDuration: waitDuration) 
    let seq = SKAction.sequence([w, m]) 
    n.run(seq) 
    posX += 125 
    waitDuration += duration 
} 

在上面的例子中,我創建另一個變量稱爲waitDuration,其跟蹤的總時間的節點動畫之前應該等待。

等待動作的持續時間設置爲waitDuration,並且在循環結束時,移動動作的持續時間增加waitDuration

+1

是的,正是我想在這裏做的。感謝您的教育。 – gfgruvin