在SKShapeNode中定位笔划

时间:2016-09-23 04:00:55

标签: ios objective-c xcode sprite-kit

是否可以在SKShapeNode进行内部中风?默认情况下,它围绕中间线。例如,如果笔划为6像素,一边是3像素,另一边是3像素......所有6像素都在内部。

P.S。抱歉我的英文。

Example stroke image

2 个答案:

答案 0 :(得分:3)

重要提示:如果因笔划颜色和形状颜色之间的颜色混合而使用笔划的小于1的alpha值,则不能很好看。

使形状为3个像素(使用问题中提供的示例)在每个方向上(向上,向下,向左和向右)较小,这样笔划就是您想要的位置。由于笔划是形状的一部分,因此您不必担心形状的尺寸较小,当您触摸笔划时,它仍然会计算为接触形状。

虽然笔划保持在新形状的一半内侧和一半外侧,但笔划位于原始形状的内侧,并且外观与原始形状的大小相同,而笔划看起来完全打开里面。

请注意,要获得每个维度缩小形状所需的像素数量,只需将所需笔划的大小除以2.

如果你试图将笔划“放”在形状的外面,而不是按照许多像素减少形状,只需在每个方向上增加相同的量。

请记住,这不仅仅是解决方案,因为没有办法(我至少知道)将笔划移动到形状的内部或外部。

答案 1 :(得分:1)

想到了处理更复杂形状的替代方案。

我们不是缩小形状,而是将笔划大小加倍,因此6现在变为12.这将使我们在外面6个,在内部6个。

我们使用SKCropNode,在中风之前使用我们的形状的面具,然后将形状添加为孩子。这应该给我们想要的结果。

这应该适用于每个场景,例如,如果我们想要外侧的笔划2和内侧的4个,我们给我们的形状一个8的笔划,我们给我们的面具形状一个4的笔划

注意我没有对此进行过测试,这一切都在脑海中考虑过。