Im программирование игры на основе SpriteKit в Swift. SKScene содержит SKSpriteNode, который содержит SKShapeNodes. Одна из этих фигур - «игрок». Пользователь должен уметь перетащить плеер. Я реализовал различные методы, чтобы получить этого рабочего пользователя. touchesBegan, touchsMoved, touchsCanceled и касается Ended. В принципе, все работает нормально, пока пользователь перетаскивает «плеер» с нормальной скоростью. Но если пользователь перетаскивает «плеер» действительно быстро touchsMoved метод не вызывается достаточно часто. Я подумал, что это возможно из-за того, что я использую SKShapeNodes, но на основе вывода (ниже), который, похоже, не так.SpriteKit - touchsMoved не называется достаточно часто - быстрое движение
Код:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touchLocation = touches.first!.locationInNode(self)
if(self.player.containsPoint(touchLocation)){
self.startedTouchingPlayer()
}
super.touchesBegan(touches, withEvent: event)
print("TOUCHES BEGAN")
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touchLocation = touches.first!.locationInNode(self)
if(self.player.containsPoint(touchLocation)){
self.isTouchingPlayer(touchLocation)
print("TOUCHES MOVED \(touchLocation)")
}
super.touchesMoved(touches, withEvent: event)
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.endedTouchingHelper()
super.touchesEnded(touches, withEvent: event)
print("TOUCHES ENDED")
}
override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
print("TOUCHES CANCELED")
self.endedTouchingHelper()
super.touchesCancelled(touches, withEvent: event)
}
Печать заявления:
Нормальное движение:
TOUCHES BEGAN
TOUCHES MOVED (-4.0, -241.499984741211)
TOUCHES MOVED (0.500015258789062, -239.0)
TOUCHES MOVED (4.0, -237.000015258789)
TOUCHES MOVED (11.0, -234.0)
TOUCHES MOVED (19.5, -229.499984741211)
TOUCHES MOVED (27.0000152587891, -225.499984741211)
TOUCHES MOVED (34.0, -221.499984741211)
TOUCHES MOVED (41.0, -217.499984741211)
TOUCHES MOVED (48.0, -213.499984741211)
TOUCHES MOVED (53.4999847412109, -210.0)
...
TOUCHES MOVED (77.5, -177.000015258789)
TOUCHES MOVED (77.5, -178.0)
TOUCHES ENDED
Быстрое движение:
TOUCHES BEGAN
TOUCHES MOVED (6.5, -277.5)
TOUCHES MOVED (3.0, -261.000030517578)
[*** at this point the finger is at a different position as the "player" ***] TOUCHES ENDED
Любой вид помощи ценится. Благодарю.
Мне нужно подождать два дня, чтобы принять мой ответ .... – eaglelynxbeaver