我正在快速创建一个涉及用字母制作单词的游戏。这些字母是单独的SKSpriteNodes,位于“架子”上,这是一个SKSpriteNode。要删除“架子”中的字母,我试图引入向上滑动。不幸的是,我遇到了被信件拾取的滑动问题。架子似乎吸收它,有时甚至是SKScene。我已禁用货架节点上的用户交互。
这是我的设置:
swipeRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("move:"))
swipeRecognizer.direction = UISwipeGestureRecognizerDirection.Up
self.view.addGestureRecognizer(swipeRecognizer)
我将swipeRecognizer添加到视图中,然后在move方法中,我有以下内容:
func move(swipe:UISwipeGestureRecognizer){
if(swipe.state == UIGestureRecognizerState.Ended && swipe.numberOfTouches() == 1){
var touchLocation = swipe.locationInView(swipe.view)
touchLocation = self.convertPointFromView(touchLocation)
var sprite = self.nodeAtPoint(touchLocation)
if sprite is Letter{
let letter = sprite as Letter
if(gameManager.letterOnShelf(letter)){
gameManager.letterFlicked(letter)
}
}
}
}
只有在有时它会将精灵识别为一个字母,80%的时间精灵都是架子而且我无法弄清楚正确的工作方式是什么......
非常感谢任何帮助。
干杯!
答案 0 :(得分:1)
我建议:
UILongPressGestureRecognizer
minimumPressDuration
设置为0。UIGestureRecognizerStateBegan
状态时,查看您的触摸精灵是否为Letter
,并保存对该图块的引用。UIGestureRecognizerStateEnded
状态下,您应该能够看到手势结束的位置(或者轨迹等),然后从之前移动存储引用的图块。