2

我如何能够创建一个 SKLabelNode 并设置它的宽度和高度。我曾考虑过只制作一个带有单词的精灵图像,然后定位该精灵,但我不相信这是最好的方法。

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

4

2 回答 2

0

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

于 2015-08-21T02:56:39.483 回答
0

以下代码将使用您提供的文本添加一个节点,并在其周围添加一个框。边框将是一个与文本大小相对应的矩形。如果你想要它是方形的,只需调整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;
于 2015-08-21T23:16:49.737 回答