2016-04-14 4 views
0

У меня есть десять спрайтов (A0, A2 ... A9 спрайтов), и я перечисляю их родительский (myNode), используя следующую строку поиска A[0-9], чтобы соответствовать спрайтам A0, A1 ... A9 ,Расширенный поиск с использованием метода enumerateChildNodesWithName

Из документов об использовании этого шаблона в строке поиска:

Эта строка поиска соответствует любой из детей текущего узла, которые с именем A0, A1, ..., A9.

Вот код, я использую:

myNode.enumerateChildNodesWithName("A[0-9]") { sprite, stop in 

    //do some stuff here  
} 

И это работает, как указано в документации. Но, позвольте сказать, что я сейчас 20 спрайтов ... Когда я попытался соответствовать спрайтов с именем A1, A2, A3 ... A20, как это:

myNode.enumerateChildNodesWithName("A[0-20]") {...} 

он не работал ... Могу ли я ожидал слишком много этой функции или я чего-то не хватает?

Я могу сопоставить требуемые спрайты несколькими способами, например, помещая их в один и тот же контейнер и перечисляя все спрайты в нем, но это не так, и мне интересно, есть ли что можно сделать, чтобы использовать нотацию [lowerBound-upperBound]?

+0

Я предполагаю, что это более или менее обозначение регулярных выражений, а не нижняя/верхняя граница – zcui93

+0

Я не думаю, что [0-9] - это «нижняя граница-верхняя граница», а просто «Один символ от 0 до 9», , Не знаете, насколько продвинутым может быть поиск, –

+0

Не могли бы вы переименовать свои спрайты в A01-A20 и попробовать A [0-2] [1-9]? –

ответ

1

Имя спрайты A01-A20 и попробовать A[0-2][1-9]

Edit: Похоже, что аргумент поиска на самом деле является регулярное выражение. Из объявления функции:

name Путь к пути Xpath, который может содержать простые регулярные выражения для сопоставления имен узлов.

So^A [0-9] {1,2} $ будет соответствовать «A», за которым следует одна или две цифры в качестве полного имени узла.