SKShapeNode .strokeColor, чтобы выглядеть так же, как.fillColor при изменении node.alpha

Когда я меняю SKShapeNode's .alpha, его stroke показывает себя как будто .strokeColor узел был ярче, чем его .fillColor, настройка .lineWidth до 0 отменяет сглаживание, которое обеспечивает инсульт. То же самое делает настройку .strokeColor в SKColor.clearColor,

SKShapeNode инсульт альфа выпуск

Вопрос

Каков наилучший способ сделать штрихи такими же, как заливка при изменении node.alpha, сохраняя сглаженность сглаживания ребер?

1 ответ

Решение

Хотя можно задать alpha узла stroke непосредственно, получая его "цвета" HSBA и переназначение нового цвета с другим alpha к stroke (для получения дополнительной информации смотрите этот ответ), так как узел fill охватывает узлы stroke, stroke'salpha должен быть установлен в 0 так что это на самом деле не будет видно. Но это отменяет сглаживание.

Таким образом, кажется, что единственный способ достичь гладких краев узла без stroke быть увиденным, это преобразовать SKShapeNode в SKSpriteNode и сбросить sprite.alpha по желанию.

гладкий; плавный

Вот фрагмент кода в Swift

let sprite = SKSpriteNode(texture: self.view!.textureFromNode(shapeNode))

Это не так уж и плохо, потому что, согласно документам Apple,

Отрисовываемый узел не обязательно должен появляться в представленной сцене представления.

Тем не менее, вы все равно должны иметь доступ к view откуда происходит конвертация

Другие вопросы по тегам