簡體   English   中英

如何使用touchesMoved函數正確更新曲線?

[英]How should I update the curve correctly with touchesMoved function?

我想制作一條曲線,當用戶移動他們的手指時,曲線改變了它的弧度,但是我所做的代碼看起來有些不對勁,當我移動手指時有很多曲線:(這是我的代碼,然后跟着可怕的build的截圖。實際上我也想知道如何用UIPanGestureRecognizer實現這個功能。

import SpriteKit
import AVFoundation
import UIKit

class Home: SKScene {

    var happiness:CGFloat {
        return currentPoint.y
    }

    var currentPoint = CGPoint(x: 0, y: 1024)

    override func didMoveToView(view: SKView) {
        backgroundColor = UIColor.blueColor()
    }

    func drawhappiness() {
        let pathNew2 = CGPathCreateMutable()
        let startx:CGFloat = 268
        let starty:CGFloat = 1024
        let cp1x:CGFloat = 568
        let cp1y:CGFloat = happiness
        let cp2x:CGFloat = 968
        let cp2y:CGFloat = happiness
        let endx:CGFloat = 1292
        let endy:CGFloat = 1024
        CGPathMoveToPoint(pathNew2, nil, startx, starty)
        CGPathAddCurveToPoint(pathNew2, nil, cp1x, cp1y, cp2x, cp2y, endx, endy)
        let shapeNew2 = SKShapeNode()
        shapeNew2.path = pathNew2
        shapeNew2.strokeColor = UIColor.greenColor()
        shapeNew2.lineWidth = 10
        addChild(shapeNew2)
    }

    override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
        for touch:AnyObject in touches {
            currentPoint = touch.locationInNode(self)
        }
    }

    override func update(currentTime: NSTimeInterval) {
        drawhappiness()
    }
}

在此輸入圖像描述

每次移動手指時,都會向場景添加新的形狀節點。 要解決此問題,請在Home創建具有全局范圍的單個形狀,在didMoveToView配置形狀(即設置線寬,顏色),並在drawhappiness更新形狀的path屬性。

例如,

class Home: SKScene {

    let shapeNew2 = SKShapeNode()
    var currentPoint = CGPoint(x: 0, y: 1024)

    var happiness:CGFloat {
        return currentPoint.y
    }

    override func didMoveToView(view: SKView) {
        backgroundColor = UIColor.blueColor()
        shapeNew2.strokeColor = UIColor.greenColor()
        shapeNew2.lineWidth = 10
        addChild(shapeNew2)
    }

    func drawhappiness() {
        let pathNew2 = CGPathCreateMutable()
        let startx:CGFloat = 268
        let starty:CGFloat = 1024
        let cp1x:CGFloat = 568
        let cp1y:CGFloat = happiness
        let cp2x:CGFloat = 968
        let cp2y:CGFloat = happiness
        let endx:CGFloat = 1292
        let endy:CGFloat = 1024
        CGPathMoveToPoint(pathNew2, nil, startx, starty)
        CGPathAddCurveToPoint(pathNew2, nil, cp1x, cp1y, cp2x, cp2y, endx, endy)
        shapeNew2.path = pathNew2
    }

    override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) {
        for touch:AnyObject in touches {
            currentPoint = touch.locationInNode(self)
        }
    }

    override func update(currentTime: NSTimeInterval) {
        drawhappiness()
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM