Не существует глобального метода отключения касания, первым ответит то, что находится в верхней части очереди рисования.
Вам нужно перебрать все ваши узлы из вашей сцены и отключить их:
enumerateChildNodesWithName("//*", usingBlock:
{ (node, stop) -> Void in
node.isUserInteractionEnabled = false
})
Теперь проблема заключается в том, чтобы снова включить их, если вы используете этот метод, вы включите его для всего, поэтому вы можете принять соглашение об именах для всех ваших сенсорных спрайтов.
enumerateChildNodesWithName("//touchable", usingBlock:
{ (node, stop) -> Void in
node.isUserInteractionEnabled = true
})
Это будет искать любой узел, имя которого начинается с touchable.
Этот метод включает рекурсию, поэтому, если у вас много узлов, он может быть медленным. Вместо этого вы должны использовать альтернативный метод:
let disableTouchNode = SKSpriteNode(color:SKColor(red:0.0,green:0.0,blue:0.0,alpha:0.1),size:self.size)
disableTouchNode.isUserinteractionEnabled = true
disableTouchNode.zPosition = 99999
self.addChild(disableTouchNode)
Что это делает, так это добавляет почти прозрачный узел поверх всех элементов размером со сцену. Таким образом, когда пользователь касается экрана, этот узел будет поглощать его вместо чего-либо еще.
person
Knight0fDragon
schedule
16.11.2016