Ios 如何在SpriteKit中调整标签节点的大小?
因此,我的场景中有两个SKLabelNodes,如下所示:Ios 如何在SpriteKit中调整标签节点的大小?,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,因此,我的场景中有两个SKLabelNodes,如下所示: SKLabelNode *label1 = [SKLabelNode labelNodeWithFontNamed:@"Arial"]; label1.text = @"Hello World!"; label1.fontColor = [SKColor redColor]; label1.fontSize = 90; label1.position = CGPointMake(CGRectGetMidX(self.frame),CGR
SKLabelNode *label1 = [SKLabelNode labelNodeWithFontNamed:@"Arial"];
label1.text = @"Hello World!";
label1.fontColor = [SKColor redColor];
label1.fontSize = 90;
label1.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame));
[self addChild: label1];
当场景开始时,我想让它们放大。我为此使用了SKAction,但scaleBy导致文本模糊,resizeTo无法工作
而且我猜这不是字体的搭配方式。有没有更好的方法,或者我应该使用UILabels?我不想这样做,因为那意味着我不能在上面使用SpriteKit物理,或者我可以吗
谢谢我运行了一个
[SKAction scaleBy:
从字体大小10到比例因子8,当文本大小增加3或更多时,文本模糊是正确的
您可以使用块来随时间增加字体大小。您将需要使用许多步骤,但结果要好得多
myInt = 10;
SKAction *block0 = [SKAction runBlock:^{
label0 = [SKLabelNode labelNodeWithFontNamed:@"Arial"];
label0.text = @"Hello World!";
label0.fontColor = [SKColor redColor];
label0.fontSize = myInt;
label0.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame));
[self addChild: label0];
}];
SKAction *wait0 = [SKAction waitForDuration:1.5];
SKAction *wait1 = [SKAction waitForDuration:0.5];
SKAction *block1 = [SKAction runBlock:^{
label0.fontSize += (myInt + 10);
}];
[self runAction:[SKAction sequence:@[wait0, block0, wait1, block1, wait1, block1, wait1, block1, wait1, block1, wait1, block1]]];
这是我对你的问题的看法
我首先使用我创建的这个类将其渲染为纹理,然后您可以将过滤模式设置为最接近纹理的
import SpriteKit
public class PKTexturedLabelNode : SKSpriteNode{
fileprivate let embeddedLabel : SKLabelNode
fileprivate var rasterizingView : SKView? {
if let rasterizeInView = rasterizeInView {
return rasterizeInView
} else {
return scene?.view
}
}
public var rasterizeInView : SKView?
public required init?(coder aDecoder: NSCoder) {
embeddedLabel = SKLabelNode()
super.init(coder: aDecoder)
}
public init(fontNamed: String?){
embeddedLabel = SKLabelNode(fontNamed: fontNamed)
super.init(texture: nil, color: SKColor.white, size: CGSize(width: 0, height: 0))
}
public init(text:String?){
embeddedLabel = SKLabelNode(text: text)
super.init(texture: nil, color: SKColor.white, size: CGSize(width: 0, height: 0))
}
var fontName : String? {
get {
return embeddedLabel.fontName
}
set {
embeddedLabel.fontName = newValue
render()
}
}
var fontSize : CGFloat {
get {
return embeddedLabel.fontSize
}
set {
embeddedLabel.fontSize = newValue
render()
}
}
var text : String? {
get {
return embeddedLabel.text
}
set {
embeddedLabel.text = newValue
render()
}
}
fileprivate func render(){
if let texture = rasterizingView?.texture(from: embeddedLabel){
texture.filteringMode = .nearest
size = texture.size()
self.texture = texture
}
}
}
是的,我忘记加了,但我也加了,我只是想知道有没有更快的way@Squid-使用SKLabelNode,你所能做的就是缩放或增加字体大小。是的,我也这么认为,如果你不经常使用它,它看起来会有起伏。这很聪明……还有一件事:我不知道我是否疯了,但我能让UITextView成为一个孩子吗节点,让它处理物理问题,还是要求太多。我只是喜欢玩弄这些功能,以便更熟悉框架。ThanksI没有看到太多人以相同的观点集成spritekit和UIKit的示例或教程。我通常会尽量避免这种情况,因为我相信苹果是一家公司,并且会假设他们为我们提供了更适合游戏引擎环境的工具。更具体地说,是指图形渲染的简易性。这只是基于我迄今为止所看到的这项全新技术的推测。我不是在做游戏,我是在做一个具有类似游戏功能的文本应用程序。我想疯了。我会研究一下信息技术