2015-08-19 80 views
0

我有一個網格與不同的廣場。當用戶點擊廣場時,此廣場會翻轉。但在此翻轉期間,touchesBegan事件沒有奏效。SKaction阻止touchesBegan事件

此代碼是在方點擊後執行:

func flipTile(node : RectSprite){ 
    let flip = SKAction.scaleXTo(-1, duration: 0.5) 
    let flip2 = SKAction.scaleXTo(-1, duration: 0.2) 

    node.setScale(1.0) 
    var key : String = Array(CircleColor.colors.keys.array)[10] 
    var changeColor = SKAction.runBlock({ node.texture = SKTexture(imageNamed:"white")}) 
    var removeCombinaison = SKAction.runBlock({ 
     self.combination.last?.removeFromParent() 
     self.combination.removeLast() 
     self.updateGrid() 

    }) 

    var action = SKAction.sequence([flip, changeColor]) 
    var action2 = SKAction.sequence([flip2, removeCombinaison]) 

    node.imageName = "white" 
    node.name = "square" 
    node.runAction(action) 
    self.combination.last?.runAction(action2) 
} 

但是,如果我在接下來單擊正方形快的情況下觸摸沒有工作。也許我需要在新線程中執行此代碼。

+0

你在使用的touchesBegan什麼檢查 – Devapploper

+0

我使用nodeAtPoint和isEqualToNode。我不檢查是否通過touchesBegan或如果我的條件不起作用。我今天晚上檢查。謝謝。 – gabrielpf

+0

謝謝,但這是我的代碼結構不好。因爲我在刪除動畫後刪除了我的數組的SKSpriteNode。所以我比較我在n指數組合觸摸的方塊,但如果我的SKAction沒有完成,我需要與n - 1指數進行比較。謝謝你的幫助,我可以理解我的錯誤。 – gabrielpf

回答

1

你可以嘗試使用(我想翻轉動畫時這甚至適用)來檢查觸摸位置:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    /* Called when a touch begins */ 

    for touch in (touches as! Set<UITouch>) { 
     let location = touch.locationInNode(self) 

     if yourNode.containsPoint(location) { 
     /* called whenever the square is touched */ 
     } else { 
     /* called when some other location on the screen is touched */ 
     } 
    } 
}