【发布时间】:2020-04-17 20:08:52
【问题描述】:
我正在运行一个非常简单的代码,我正在尝试检测长按何时结束,然后执行一个函数,但我似乎不知道该怎么做。我在网上查看了很多资源,但我一直无法弄清楚。我对 Swift 编码很陌生,所以如果答案很简单,我提前道歉。这是所有代码:
import SpriteKit
class GameScene: SKScene {
let char = SKSpriteNode(imageNamed: "flying character")
override func didMove(to view: SKView) {
setScene()
}
@objc func press() {
physicsWorld.gravity = CGVector(dx: 0.1, dy: 1.5)
if UILongPressGestureRecognizer.State.changed == .ended {
print ("the gesture has ended")
}
}
func setScene() {
backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 221/255, alpha: 1.0)
char.size = CGSize(width: frame.size.width/5, height: frame.size.width/5)
char.run(SKAction.rotate(byAngle: .pi*11/6, duration: 0.00001))
char.position = CGPoint(x: frame.midX - 100, y: frame.midY + 150)
addChild(char)
char.physicsBody = SKPhysicsBody(circleOfRadius: char.size.width/2)
char.physicsBody?.categoryBitMask = PhysicsCategories.charCategory
physicsWorld.gravity = CGVector(dx: 0.1, dy: -1.5)
char.physicsBody?.affectedByGravity = true
view?.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(press)))
}
}
如您所见,我只是在长按结束后尝试执行打印命令。
【问题讨论】:
-
使用
touchesEnded方法? -
我没有遵循你的代码......你的重力变化将发生在所有事件上。您的意思是将重力变化置于结束事件中吗?
标签: ios swift user-interface sprite-kit 2d-games