簡體   English   中英

使用Swift的SpriteKit的UISwipeGestureRecognizer

[英]UISwipeGestureRecognizer with SpriteKit using Swift

我正在迅速創建一個游戲,其中涉及用字母制作單詞。 這些字母是單獨的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%的時間精靈都是架子,而我無法弄清楚它是什么正確的工作方式.....

任何幫助是極大的贊賞。

歡呼!

我建議:

  1. 使用將UILongPressGestureRecognizer設置為0的minimumPressDuration
  2. 當手勢處於UIGestureRecognizerStateBegan狀態時,查看觸摸結束的精靈是否為Letter然后保存對該圖塊的引用。
  3. UIGestureRecognizerStateEnded狀態下,您應該能夠查看手勢結束的位置(或軌跡等),然后從較早位置移動存儲了引用的圖塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM