【问题标题】:How to create square SKLabelNode in Sprite kit如何在 Sprite 工具包中创建方形 SKLabelNode
【发布时间】:2015-08-20 12:37:00
【问题描述】:

我怎样才能创建一个 SKLabelNode 并设置它的宽度和高度。我曾想过只制作一个带有单词的精灵图像,然后定位该精灵,但我不认为这是最好的方法。

图片: http://i.imgur.com/dAP6yeT.png 谢谢!

【问题讨论】:

  • 你能说明你想要达到什么效果吗?
  • SKLabelNode 只显示文本,因此它的宽度和高度是相对于它显示的文本而言的。使用精灵节点的想法可能是最好的选择。

标签: swift sprite-kit sklabelnode


【解决方案1】:

我认为做你所要求的最好的方法就是做你所说的。只需制作单词的图像。这使它成为您也可以将其用作按钮的地方。它可能会减去一些 fps,但前提是您的场景中有大约 50 多个节点。这不太可能,因为大多数人在菜单上贴了标签。但是,如果您确实想调整 SKLabelNode 的大小,只需像这样调整 tex 的大小。 label.fontsize = 20

【讨论】:

    【解决方案2】:

    以下代码将添加一个节点,其中包含您提供的文本并在其周围放置一个框。边框将是一个与文本大小相对应的矩形。如果您希望它是方形的,只需调整 borderPath 点以仅将 labelNode.frame.size.width/2 用于水平和垂直间距。将 +/- 10 调整为所需文本周围的间距。

    //create the wrapper node
    float initialWidth = 50;
    float initialHeight = 50;
    SKSpriteNode *parentNode = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(initialWidth, initialHeight)];
    
    //create the label node
    NSString *FontName = [UIFont boldSystemFontOfSize:10].fontName;
    SKLabelNode *labelNode = [SKLabelNode labelNodeWithFontNamed:FontName];
    labelNode.text = @"some text";
    labelNode.fontColor = [UIColor blackColor];
    labelNode.position = CGPointMake(0, -labelNode.frame.size.height/4);
    
    //create the border node
    SKShapeNode *borderNode = [SKShapeNode new];
    UIBezierPath* borderPath = [[UIBezierPath alloc] init];
    [borderPath moveToPoint:CGPointMake(-labelNode.frame.size.width/2 -10, -labelNode.frame.size.height/2 -10)];
    [borderPath addLineToPoint:CGPointMake(labelNode.frame.size.width/2 +10, -labelNode.frame.size.height/2 -10)];
    [borderPath addLineToPoint:CGPointMake(labelNode.frame.size.width/2 +10, labelNode.frame.size.height/2 +10)];
    [borderPath addLineToPoint:CGPointMake(-labelNode.frame.size.width/2 -10, labelNode.frame.size.height/2 +10)];
    [borderPath addLineToPoint:CGPointMake(-labelNode.frame.size.width/2 -10, -labelNode.frame.size.height/2 -10)];
    borderNode.path = borderPath.CGPath;
    borderNode.lineWidth = 10.0;
    [borderNode setStrokeColor:[UIColor blackColor]];
    
    //add it all together and present it
    [parentNode addChild:borderNode];
    [parentNode addChild:labelNode];
    parentNode.position = newShapeScenePoint;
    parentNode.size = CGSizeMake(labelNode.frame.size.width +10, labelNode.frame.size.height +10);
    [myScene addChild:parentNode];
    

    你可以移动整个东西

    parentNode.position = CGPointMake(someNewX, someNewY)
    

    您可以调整整个内容(包括文本)的大小

    float bigger = 3.0; //or whatever size you want
    parentNode.xScale = bigger;
    parentNode.yScale = bigger;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多