Je suis un débutant suivant le tutoriel here pour dessiner des formes dans Swift.Swift 3/SpriteKit - Dessiner des formes indépendantes avec le doigt
import SpriteKit
class GameScene: SKScene {
var activeSlice: SKShapeNode!
var activeSlicePoints = [CGPoint]()
override func didMove(to view: SKView) {
createSlices()
}
func createSlices() {
activeSlice = SKShapeNode()
activeSlice.strokeColor = UIColor(red: 1, green: 0.9, blue: 0, alpha: 1)
activeSlice.lineWidth = 9
addChild(activeSlice)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
super.touchesBegan(touches, with: event)
if let touch = touches.first {
let location = touch.location(in: self)
activeSlicePoints.append(location)
redrawActiveSlice()
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let touch = touches.first else { return }
let location = touch.location(in: self)
activeSlicePoints.append(location)
redrawActiveSlice()
}
override func touchesEnded(_ touches: Set<UITouch>?, with event: UIEvent?) {
}
func redrawActiveSlice() {
let path = UIBezierPath()
path.move(to: activeSlicePoints[0])
for i in 1 ..< activeSlicePoints.count {
path.addLine(to: activeSlicePoints[i])
}
activeSlice.path = path.cgPath
}
}
Avec ce code, lorsque vous relâchez le doigt puis touchez à nouveau pour dessiner, vous avez une ligne reliant les deux formes. Je voudrais dessiner des formes indépendantes. Peut-être en modifiant le code afin que pour chaque instance de touchesEnded()
, le tableau de points représentant la forme soit stocké dans un tableau multidimensionnel et en créant un tableau de points pour chaque nouvelle instance de touchesBegan()
?
Nous vous remercions de votre aide.
Merci! Pour le faire fonctionner, j'ai dû ajouter 'activeSlicePoints.removeAll (keepingCapacity: true)' à touchesBegan() 'en plus de votre code. –