2

我有一个 SKShapeNode,以及一个通用 SKNode 下的标签。如果我尝试缩放该节点,它的位置会无缘无故地改变!。如果我尝试仅缩放它下面包含的节点,它会正确缩放但不能从中心缩放,所以它会向上和向右扩展。

我究竟做错了什么?先规模后 先规模后

缩放后 缩放后

注意它的位置向上移动。不知道为什么,即使我把它作为一个动作来做。此外,位置没有根据日志改变,但看起来框架变大了(尽管这是预期的)

重新创建问题的步骤:

设置高度和宽度 @h = 50 @w = 256

创建具有高度和宽度的矩形 CGRectMake(0, 0, @w, @h)

获取 rect UIBezierPath.bezierPathWithRect(rect).CGPath 的路径

创建带有路径的 skshape 节点,设置位置

  antialiased: false,
  lineWidth: 1.0,
  strokeColor: SKColor.blackColor,
  fillColor: SKColor.whiteColor

创建sklabel,垂直居中对齐,设置位置

创建通用 SKNode,没有属性,将 skshapenode 和 sklabel 作为子节点添加到它

缩放通用 SKNode。

4

2 回答 2

1

我有一个类似的问题:我创建了一个 SKShapeNode.ellipseInRect,当我不需要缩放它时它看起来非常好。然而,当我试图缩小它以适应它后面的文本时,它会随机向屏幕左下角缩小!

我做了一点调试,让我吃惊的数字是位置设置为 (0, 0),即使椭圆在屏幕的左上角!然后我意识到通过使用矩形初始化“锚点”(即使 SKShapeNodes 在技术上没有它们)也在 (0, 0) 处。这种行为可以解释我向那个点收缩而你远离那个点。

为我解决这个问题的方法不是将我的位置放在矩形中,而是在之后设置位置。然后它围绕我节点的中心点而不是屏幕原点进行缩放。希望有帮助!

于 2015-08-22T03:03:57.940 回答
0

尝试这个

SKLabelNode *labNode = [SKLabelNode labelNodeWithFontNamed:@"Arial"];
labNode.fontSize = 12.0f;
labNode.fontColor = [SKColor blackColor];
labNode.text = @"SMASH";


SKSpriteNode *topWithText = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(100, 30)];
topWithText.position = CGPointMake(100, 110);
[topWithText addChild:labNode];

SKSpriteNode *bottom = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(100, 10)];
bottom.position = CGPointMake(100, 100);

[self addChild:topWithText];
[self addChild:bottom];

[topWithText runAction:[SKAction sequence:@[
                                      [SKAction waitForDuration:3.0],
                                      [SKAction scaleBy:3.0 duration:3]
                                      ]]];
于 2013-10-04T03:19:45.483 回答