2016-11-16 3 views
0

Я пытаюсь временно отключить прикосновение на весь экран, несмотря на то, что у них много спрайтов с сенсорными экранами.Отключить прикосновение для всего экрана, SpriteKit, как?

я подумал, очевидно, ошибочно, выключая прикосновение к сцене будет делать это:

scene?.isUserInteractionEnabled = false 

Но это не сработало, так что я попробовал это, что тоже не получилось:

view?.scene?.isUserInteractionEnabled = false 

это тоже не работает, поэтому я попытался это, а также внутри сцены:

self.isUserInteractionEnabled = false 

ответ

2

Там нет глобального метода к повороту Прикосновение, все, что находится наверху очереди рисования, является первым ответчиком.

Вам нужно перебирать все ваши узлы с вашей сцены и превратить их:

enumerateChildNodesWithName("//*", usingBlock: 
    { (node, stop) -> Void in 
     node.isUserInteractionEnabled = false 
    }) 

Теперь задача превратить их обратно, если вы используете этот метод, вы превратите его на все , так что вы можете принять именование для всех оголенных спрайтов

enumerateChildNodesWithName("//touchable", usingBlock: 
    { (node, stop) -> Void in 
     node.isUserInteractionEnabled = true 
    }) 

Это будет выглядеть для любого узла, который имеет имя, которое начинается с осязаемым.

Этот метод включает рекурсию, поэтому, если у вас есть тонна узлов, она может быть медленной. Вместо этого вы должны использовать альтернативный метод:

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) 

Что это делает шлепок на почти прозрачный узел поверх всех элементов размером сцены. Таким образом, когда пользователь коснется экрана, этот узел поглотит его, а не что-либо еще.

+0

Уч. И Юк. Плюс СПАСИБО! Я решил поместить объекты, которые хочу отключить, в массив, перевернуть их на взаимодействие, а затем вернуться, когда они мне понадобятся. Препятствует тому, что нет более быстрого способа временно отключить все входные данные. – Confused

+0

И хороший трюк, «слой» на 99999, чтобы захватить и проглотить прикосновения! – Confused

+0

Теперь я использую эту перечисляемую вещь, чтобы удалить один конкретный узел ... таймер из другого вопроса ... можете ли вы объяснить, что делает '(node, stop)'? – Confused

1

Следующая отключит все штрихи

self.view?.isUserInteractionEnabled = false 
Смежные вопросы