Spritekit 中的资产目录图像切片

Asset catalog image slicing in Spritekit

我想让我的按钮水平和垂直可拉伸。

故事板中一切正常

但在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 提供的 "Working with Sprites" 文档中进行了讨论,并且比我刚刚在 "Resizing a Sprite":

部分所做的更有效地解释了它

https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Sprites/Sprites.html

如果设置了 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);