SKShapeNode .strokeColor, чтобы выглядеть так же, как.fillColor при изменении node.alpha
Когда я меняю SKShapeNode's .alpha
, его stroke
показывает себя как будто .strokeColor
узел был ярче, чем его .fillColor
, настройка .lineWidth
до 0 отменяет сглаживание, которое обеспечивает инсульт. То же самое делает настройку .strokeColor
в SKColor.clearColor
,
Вопрос
Каков наилучший способ сделать штрихи такими же, как заливка при изменении node.alpha
, сохраняя сглаженность сглаживания ребер?
1 ответ
Хотя можно задать alpha
узла stroke
непосредственно, получая его "цвета" HSBA
и переназначение нового цвета с другим alpha
к stroke
(для получения дополнительной информации смотрите этот ответ), так как узел fill
охватывает узлы stroke
, stroke's
alpha
должен быть установлен в 0
так что это на самом деле не будет видно. Но это отменяет сглаживание.
Таким образом, кажется, что единственный способ достичь гладких краев узла без stroke
быть увиденным, это преобразовать SKShapeNode
в SKSpriteNode
и сбросить sprite.alpha
по желанию.
Вот фрагмент кода в Swift
let sprite = SKSpriteNode(texture: self.view!.textureFromNode(shapeNode))
Это не так уж и плохо, потому что, согласно документам Apple,
Отрисовываемый узел не обязательно должен появляться в представленной сцене представления.
Тем не менее, вы все равно должны иметь доступ к view
откуда происходит конвертация