Есть ли способ добавить действие ко всем созданным узлам, кроме одного узла в swift?

Я хочу добавить действие для всех узлов на сцене, кроме одного или двух узлов.

Или я хотел бы найти способ доступа ко всем узлам другим способом использования метода «name».

Это не полная игра, но я не хочу использовать метод «name», потому что каждый квадрат имеет другое имя.

import SpriteKit import GameplayKit var Score = 0 class GameScene: SKScene { let SquareSide = 100 var touchedNode = SKNode() var touchLocation = CGPoint() let ScoreLabel = SKLabelNode() let squareNumber = 0 override func didMove(to view: SKView) { CreatSquares() } func CreatSquares(){ let square = SKShapeNode(rect: CGRect(x: Int(arc4random_uniform(UInt32(self.frame.width))), y: Int(arc4random_uniform(UInt32(self.frame.height))), width: SquareSide, height: SquareSide)) if Score <= 10{ square.fillColor = UIColor.orange} else{ square.fillColor = UIColor.blue } square.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: square.frame.width, height: square.frame.height), center: CGPoint(x: square.position.x, y: square.position.y)) square.physicsBody?.affectedByGravity = false square.physicsBody?.allowsRotation = false square.physicsBody?.categoryBitMask = 0 square.name = "square\(number)" number++ self.addChild(square) } } func CreatScoreLabel(){ let ScoreLabel = SKLabelNode() ScoreLabel.text = "Your Score is:\(Score)" ScoreLabel.position = CGPoint(x: self.frame.width/2, y: self.frame.height - 50) ScoreLabel.color = UIColor.white self.addChild(ScoreLabel) } func updatScore(){ ScoreLabel.text = "Your Score is:\(Score)" } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { for touch in touches { touchLocation = touch.location(in: self) touchedNode = self.atPoint(touchLocation) if touchedNode.name == "square"{ Score += 1 touchedNode.removeFromParent() } } } override func update(_ currentTime: TimeInterval) { updatScore() } 

2 Solutions collect form web for “Есть ли способ добавить действие ко всем созданным узлам, кроме одного узла в swift?”

Как объяснил Confused, я думаю, что вы забыли реальную силу enumerateChildNodes (withName:

Действительно, про имя:

Имя для поиска. Это может быть либо буквальное имя узла, либо настраиваемая строка поиска. См. Поиск дерева узлов .

Это означает, что вы также можете:

 self.enumerateChildNodes(withName: "//square*") { node, _ in // node is equal to each child where the name start with "square" // in other words, here you can see square0, square1, square2, square3 etc... if node.name == "square3" { // do whatever you want with square3 } } 

// указывает, что поиск должен начинаться с корневого узла и выполняться рекурсивно по всему дереву узлов. В противном случае он выполняет рекурсивный поиск из своей текущей позиции.

* означает, что поиск соответствует нулю или нескольким символам.

Самый простой способ сделать это – добавить все узлы, в которые вы хотите добавить действия, в массив, затем выполнить итерацию по этому массиву, добавив действия, когда захотите / нуждаетесь.

Это имеет хит памяти, если ваши объекты огромны и сложны, но это самый организованный и быстрый способ сделать это, не используя .name .

И намного быстрее и проще, чем возиться по иерархии узлов с помощью enumerateChildNodes... т. Д.

  • Xcode ui test: staticTexts начинаются с
  • UIButton останавливает прокрутку UIScrollView в Swift
  • iOS Swift viewForHeaderInSection Не вызывается
  • Swift ios проверяет, включены ли удаленные push-уведомления в ios9 и ios10
  • Ошибка: обнаружено нуль при развертывании необязательного значения; Пока передают данные новому контроллеру
  • #warning: C-стиль для утверждения устарел и будет удален в будущей версии Swift
  • Как разбить строку на строки?
  • CoreBluetooth didDiscoverPeripheral не вызывается в Swift
  • Как настроить еженедельное локальное уведомление в быстром
  • Абонентские вызовы AsyncSocket не вызывают в быстром классе
  • Что использует UIControlState «приложение» UIButton?
  • Interesting Posts

    ошибка транзакции магазина: «Не удается подключиться к iTunes Store» на устройстве ios 7

    Как обрабатывать масштаб изображения на всех доступных разрешениях iPhone?

    Как отображать видео с ALAsset на UICollectionview ios

    IOS Несколько правых и левых выравниваний на одной линии

    Есть ли способ обновить высоту одного UITableViewCell без перерасчета высоты для каждой ячейки?

    Понимание политики принятия cookie iOS

    Исключение NSURLConnectionLoader с OS X, но работа с IOS

    Я не могу получить этот простой псевдоним LLDB для работы

    Извлечение значений для одного или нескольких отношений с использованием NSPredicate

    как получить идентификатор клиента PayPal

    Получите GPS без предупреждения с разрешением ROOT (джейлбрейк)

    Создал сертификат, используя SecCertificateCreateWithData на iOS

    iOS iPhone 5 Устройство CMMotionMotionUpdateInterval проблема

    Приложение не настроено: это приложение все еще находится в режиме разработки

    Как взаимодействовать с UITableView в UIViewController?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.