iOS Sprite Kit - SKSpriteNode的.centerRect属性不起作用

Tom*_*oso 5 objective-c ios sprite-kit

我正在浏览Apple的SpriteKit文档,并且遇到了一个非常有用的功能,我可以在编写UI时使用它.问题是我无法让它发挥作用.

请参阅此页面并向下滚动到"调整精灵大小" - Apple Docs

我已经完全复制了图像尺寸并使用相同的代码,因为我做错了.但我总是看到一个看起来很紧张的图像而不是正确的"端盖"保持相同的比例.

我指的是这段代码:

SKSpriteNode *button = [SKSpriteNode spriteWithImageNamed:@"stretchable_button.png"];
button.centerRect = CGRectMake(12.0/28.0,12.0/28.0,4.0/28.0,4.0/28.0);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我错过了一步吗?

编辑:

这是我一直在使用的代码.我删除了我的按钮类并尝试将其与SKSPriteNode一起使用,但问题仍然存在.我也改变了图像,以确保它不是那样的.使用的图像是正常尺寸的32x32.

SKSpriteNode *button = [SKSpriteNode spriteNodeWithImageNamed:@"Button.png"];
[self addChild:button];

button.position = ccp(200, 200);
button.size = CGSizeMake(128, 64);
button.centerRect = CGRectMake(9/32, 9/32, 14/32, 14/32);
Run Code Online (Sandbox Code Playgroud)

小智 10

如果调整sprite .scale属性,则.centerRect属性的工作方式如下所示.

尝试:

SKTexture *texture = [SKTexture textureWithImageNamed:@"Button.png"];
SKSpriteNode *button = [[SKSpriteNode alloc] initWithTexture:texture];
button.centerRect = CGRectMake(9/32, 9/32, 14/32, 14/32);
[self addChild:button];    
button.xScale = 128.0/texture.size.width;
button.yScale = 64.0/texture.size.height;
Run Code Online (Sandbox Code Playgroud)

  • 最后一行代码是否有剪切和粘贴错误?应该是yScale和身高吗? (3认同)

ric*_*ter 3

9/32是整数除法,所以传递给的结果CGRectMake为零。其他三个参数也是如此。如果您使用像您引用的示例一样的浮点文字,您可能会得到更好的结果。