2015-08-20 33 views
2

我如何创建SKLabelNode并设置它的宽度和高度。我曾经考虑过只用一个字来制作一个精灵图像,然后定位这个精灵,但我不相信这是做这件事的最好方法。如何在Sprite工具包中创建方形SKLabelNode

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

+0

整个事情,您可以调整整个事情(包括文本),你可以说明你想达到什么样的效果呢? – CloakedEddy

+2

SKLabelNode只显示文本,所以它的宽度和高度是相对于它显示的文本。使用精灵节点的想法可能是最好的选择。 – MaxKargin

回答

0

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

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;