我有一个有 3 个精灵的'游戏'。如果用户点击"精灵1",然后点击"精灵2"。有没有办法记住按下了哪些精灵?它仅适用于 2 个精灵,如果有更多精灵,我需要清空"内存"并从最后一个"触摸"重新开始,我不想使用布尔值。
我所有的精灵都有.name
属性,所以我可以在那里访问它们。
这样IF
声明就足够了吗
var spriteArr:[String] = []
let location = (touch as UITouch).locationInNode(self)
for touch in touches{
if spriteArr.count < 2 {
spriteArr.append(self.nodeAtPoint(location))
}else{
spriteArr.removeAll
spriteArr.append(self.nodeAtPoint(location))
}
}
您可以通过访问节点的 .name 并将名称存储在这样的数组中来检查精灵。
var nodeNames:[String] = []
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
let touch = touches.first as! UITouch
var touchedNode:SKNode = nodeAtPoint(touch.locationInNode(self))
if(nodeNames.count > 2){
nodeNames = []
}
if(touchedNode.name != nil){
if(!contains(nodeNames, touchedNode.name)){
nodeNames.append(touchedNode.name)
}
}
}