我想让我的按钮水平和垂直拉伸。
在情节提要中一切正常
但是在SpriteKit中就不一样了!
我正在使用加载图像
let spriteTexture = SKTexture(imageNamed: "button");
let sprite = SKSpriteNode(texture: spriteTexture, color: nil, size: CGSizeMake(290, 400));
我想让我的按钮水平和垂直拉伸。
在情节提要中一切正常
但是在SpriteKit中就不一样了!
我正在使用加载图像
let spriteTexture = SKTexture(imageNamed: "button");
let sprite = SKSpriteNode(texture: spriteTexture, color: nil, size: CGSizeMake(290, 400));
您需要设置centreRect
定义其缩放方式的精灵属性。这是中心的标准化CGRect
,不会被缩放,但它周围的元素会被缩放。
查看您的按钮,您希望除中心几个像素之外的所有内容都保持未拉伸。要设置centreRect
属性:
sprite.centerRect = CGRectMake(0.49, 0.49, 0.02, 0.02)
这意味着一个矩形是从距离精灵角的宽度和高度的 49% 的点绘制的,其边长分别为精灵宽度和高度的 2%。因此只有纹理的中心 2% 被拉伸。
这在 Apple 提供的“使用 Sprites”文档中进行了讨论,并比我刚刚在“调整 Sprite 大小”一节中更有效地解释了它:
如果设置了centeRect、yScale、xScale,按钮将正确伸展
let sprite = SKSpriteNode(texture: spriteTexture, color: nil, size: CGSizeMake(290, 58));
sprite.position = CGPointMake(0, -100);
sprite.centerRect = CGRectMake( 140/290.0, 24/58.0, 10.0/58.0, 10.0/58.0);
sprite.yScale = CGFloat(250.0 / 58.0);
sprite.xScale = CGFloat((self.frame.size.width - 20) / 290.0);
self.addChild(sprite);