2017-01-01 9 views
2

Я подклассифицирую SKNode, чтобы отобразить карту, состоящую из множества SKSpriteNodes, добавив эти узлы в мой подкласс.При подклассификации SKNode, если свойство Frame возвращает непустое значение?

Все работает хорошо, но я заметил, что Frame моего узла подкласса всегда равен 0.

Я не мог найти ничего об этом в документации, так: я должен переопределить Frame свойства и возврат правильное значение?

+0

Можете ли вы уточнить «Кадр ... Всегда 0»? Рамка должна быть структурой CGRect, поэтому она не может быть нулевой. Обычно для SKNode фрейм будет иметь правильное положение, но имеет нулевую ширину и высоту. Если он сам позиционируется на 0,0 в сцене, то все его члены будут равны нулю. Это было бы нормально и не нужно было бы переопределять фрейм. Если вам нужен кадр его дочерних элементов, используйте метод calculateAccumulatedFrame. –

+0

Я имею в виду 0 как для ширины, так и для высоты. Я заметил, что SKSpriteNode имеет допустимую ширину и высоту. – Krumelur

ответ

3

Свойство frame является рамкой самого узла, игнорируя любые дочерние элементы. Для SKNode это позиция, но нулевая ширина и высота.

Рамка не пуста, если класс узла рисует содержимое. (https://developer.apple.com/reference/spritekit/sknode)

который я прочитал как: SKNode не обращает никакого содержания, так что это правильно для того, чтобы быть пустым.

Рам узла и своих детей обеспечиваются с помощью метода calculateAccumulatedFrame() и функций, которые нуждаются в рамке к югу от дерева должен вызова, который, а не ссылаться на свойствах кадра.

Поэтому должен не нужно переопределять рамку для вашего SKNode. Я никогда не имел подобных конструкций в нескольких приложениях и еще не имел проблем ...

+0

Делает смысл. Что будет примером узла, который «рисует контент»? – Krumelur

+0

@Krumelur: SKSpriteNode или SKLabelNode - оба наследуются от SKNode, но имеют доступное содержимое, поэтому будут иметь ширину и высоту в соответствии с этим контентом. –

 Смежные вопросы

  • Нет связанных вопросов^_^