Swift,使用 UISwipeGestureRecongizer

Posted

技术标签:

【中文标题】Swift,使用 UISwipeGestureRecongizer【英文标题】:Swift, using UISwipeGestureRecongizer 【发布时间】:2015-04-18 20:52:28 【问题描述】:

我目前正在使用 Swift 1.2 和 Xcode 6.3 开发我的第一个应用程序,但遇到了困难。

到目前为止,我有两个精灵在视图上方生成并落在视图下方

func spawnSquare() 
    let square = SKSpriteNode(imageNamed: "Square")
    square.physicsBody = SKPhysicsBody(rectangleOfSize: square.size)
    square.physicsBody?.dynamic = true

    let positionStart = CGPointMake(size.width * 0.5, size.width * 2.0)
    let positionEnd = CGPointMake(size.width * 0.5, size.height * -2.0)

     square.position = positionStart
            addChild(square)


    let shapesMovment = SKAction.moveTo(positionEnd, duration: shapeSpeed)
        square.runAction(shapesMovment)


func spawnCircle() 

    let circle = SKSpriteNode(imageNamed: "Circle")
    circle.physicsBody = SKPhysicsBody (circleOfRadius:    
    circle.size.width/2 )
    circle.physicsBody?.dynamic = true

    let positionStart = CGPointMake(size.width * 0.5, size.width * 2.0)
    let positionEnd = CGPointMake(size.width * 0.5, size.height * -2.0)

    circle.position = positionStart
            addChild(circle)


    let shapesMovment = SKAction.moveTo(positionEnd, duration: shapeSpeed)
        circle.runAction(shapesMovment)
        

现在我希望能够向左或向右滑动其中一个精灵,但我不知道如何 使用 UISwipeGestureRecogniser 实现移动动作。

我在 didMoveToView 中添加了两个 GestureRecongizer

  let swipeLeft: UISwipeGestureRecognizer  = UISwipeGestureRecognizer(target: self, action: Selector("swipedLeft:"))
    swipeLeft.direction = .Left
    view.addGestureRecognizer(swipeLeft)

    let swipeRight: UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipedRight:"))
    swipeRight.direction = .Right
    view.addGestureRecognizer(swipeRight)

我在 GameScene 的底部添加了两个函数,所以 println 会声明我刷过

func swipedRight(sender: UISwipeGestureRecognizerDirection) 
    println("Swiped Right")

   
   func swipedLeft(sender: UISwipeGestureRecognizerDirection) 
        println("Swiped Left")
    

现在我假设我可以在其中一个滑动函数中编写代码来告诉 SwipeGesture 我想移动一个精灵, 但我不知道从哪里开始,而且我没有太多运气在网上四处寻找答案,所以任何帮助都将不胜感激。

【问题讨论】:

如果您希望能够拖动节点并扔掉它们。在这里查看我的答案:***.com/a/28259980/2158465 【参考方案1】:

滑动手势识别器是“一次性”交易。你会被告知“用户刷卡了!”就是这样。您不能让用户根据滑动手势拖动您的精灵。

如果您想要在滑动时进行固定动作(例如将精灵动画从侧面),那么滑动就可以正常工作。

您的 swipedRight 和 swipedLeft 函数是错误的。手势识别器的目标方法总是传递一个且只有一个参数:手势识别器。

手势识别器为其附加的视图有一个参数。

您需要重写 swipedRight 和 swipedLeft 函数,将滑动手势识别器作为唯一参数。

然后在函数体中,您需要从手势识别器(您的精灵)中获取视图属性。然后,您可以在该视图上执行您想要的任何动画。 (

【讨论】:

以上是关于Swift,使用 UISwipeGestureRecongizer的主要内容,如果未能解决你的问题,请参考以下文章

swift 使用swift获取数据使用情况

我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?

Swift初窥--使用Swift实现TableView

Swift : 使用多个 swift 文件或仅使用一个 viewController?保持清洁

如何使用 Swift Package Manager `swift build` 命令构建 Swift Package 的优化版本

在 swift 项目中集成 swift 框架,都使用 cocoapods