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":
部分所做的更有效地解释了它
如果设置了 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);
我想让我的按钮水平和垂直可拉伸。
故事板中一切正常
但在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":
部分所做的更有效地解释了它如果设置了 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);