在 SKSpriteNode 上使用 resizableImageWithCapInsets

Mar*_*tin 4 ios uiedgeinsets sprite-kit

我目前正在尝试在 SKSpriteNode 上使用可拉伸图像。

通常,可拉伸图像由方法返回 UIImage::resizableImageWithCapInsets:

所以我写了这段代码:

SKTexture * texture = [SKTexture textureWithImage:[image resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]];
SKSpriteNode * node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(150, 8)];
Run Code Online (Sandbox Code Playgroud)

但它不起作用。节点在不考虑边缘插入的情况下拉伸自身。难道只有这样吗?

jon*_*ahb 5

使用 的centerRect属性SKSpriteNode。假设您的纹理宽度为 50 像素,并且您不想拉伸最左侧和最右侧的 10 个像素:

SKTexture *texture = [SKTexture textureWithImage:image];
SKSpriteNode *node = [SKSpriteNode spriteNodeWithTexture:texture size:CGSizeMake(150, 8)];
node.centerRect = CGRectMake(10 / 50.0, 0, 30 / 50.0, 1);
Run Code Online (Sandbox Code Playgroud)

centerRect在纹理的单位坐标中指定。更多信息在这里下“调整雪碧。”