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 3 项目中使用 Swift 2.3 框架吗?
Swift : 使用多个 swift 文件或仅使用一个 viewController?保持清洁
如何使用 Swift Package Manager `swift build` 命令构建 Swift Package 的优化版本