2015-08-19 51 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 */ 
     } 
    } 
}