SKCropNode
SKCropNode
обрезки пиксели, нарисованные его дочерними элементами так, чтобы только некоторые пиксели были представлены к кадровому буферу родителя.
Узел обрезки полезен для реализации представлений кабины, средств управления, и других игровых индикаторов, а также любого эффекта, где ряд узлов должен быть нарисован только в определенной части сцены. Рисунок 1 показывает, как работает узел обрезки. Это использует искусство ракеты, показанное слева как маска для спрайта, нарисованного как дочерний элемент узла обрезки, показанного справа.
Обрезанная область указана с помощью маски. Маска не является фиксированным изображением. Маска представляется от узла, точно так же, как другое содержание в Наборе Sprite. Это означает, что узел обрезки может использовать простые маски, полученные из части иллюстраций, но это может также использовать более сложные маски. Например, вот некоторые способы, которыми Вы могли бы указать маску:
Нетекстурированный спрайт, ограничивающий содержание прямоугольной частью сцены.
Текстурированный спрайт является точным на пиксельную маску. Но рассмотрите также преимущества неоднородно масштабированной текстуры. Вы могли использовать неоднородно масштабированную текстуру, чтобы создать маску для элемента пользовательского интерфейса изменяемого размера (такого как медицинская панель) и затем заполнить маскируемую зону динамическим контентом.
Набор узлов может динамично генерировать сложную маску, изменяющуюся каждый раз, когда кадр представляется.
Для использования узла обрезки добавьте дочерние узлы, как Вы были бы для любого другого узла. Тогда установите узел обрезки maskNode
свойство для указания на другой узел. Когда сцена представляется, маска обрезки представляет свой узел маски и использует получающуюся маску для определения, какие пиксели ее дочерних элементов должны быть представлены к кадровому буферу родителя.
Перечисление 1 показывает простое использование маски. Этот код загружает рисунок маски из текстуры в комплекте приложений. Часть содержания сцены тогда представляется как дочерние элементы узла обрезки, с помощью маски, чтобы препятствовать тому, чтобы он превысил ограничения часть экрана что игровое использование для показа средств управления.
SKCropNode *cropNode = [[SKCropNode alloc] init];
cropNode.maskNode = [[SKSpriteNode alloc] initWithImageNamed:@"cockpitMask"];
[cropNode addChild: sceneContentNode];
[self addChild:cropNode];
[self addChild:gameControlNodes];
Когда дочерние элементы узла обрезки представляются, узел маски сначала представляется и используется для обрезки дочерних элементов узла.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
Печатаемый
-
NSCoding
-
NSCopying
-
NSObject
Оператор импорта
Swift
import SpriteKit
Objective C
@import SpriteKit;
Доступность
Доступный в OS X v10.9 и позже.
-
Узел раньше определял маску узла обрезки.
Обсуждение
Узел, предоставленный узлу обрезки, не должен быть дочерним элементом другого узла; однако, это может иметь собственные дочерние элементы.
Когда содержание узла обрезки представляется, узел обрезки сначала вовлекает свою маску в частный буфер. Затем это представляет свои дочерние элементы. При рендеринге его дочерних элементов каждый пиксель проверяется по соответствующему пикселю в маске. Если пиксель в маске имеет альфа-значение меньше чем 0,05, пиксель изображения кашируется. Любой пиксель, не представленный узлом маски, автоматически кашируется.
Значение по умолчанию этого свойства
nil
, который указывает, что не должны быть обрезаны дочерние узлы.Оператор импорта
Objective C
@import SpriteKit;
Swift
import SpriteKit
Доступность
Доступный в OS X v10.9 и позже.