缩放 SKSpriteNode 而不缩放其子节点
Posted
技术标签:
【中文标题】缩放 SKSpriteNode 而不缩放其子节点【英文标题】:Scaling a SKSpriteNode without its children being scaled 【发布时间】:2014-09-13 02:32:47 【问题描述】:我正在尝试以编程方式创建按钮。我将 SKSpriteNode 子类化,它的一个子类是 SKLabelNode。我这样做的原因是标签和按钮一起移动并且是一个单元。问题是,当我缩放按钮时,标签也会缩放,并且会扭曲文本,使其看起来像素化(非常可怕)。有没有办法,即使我必须重写整个东西,这样我就可以只缩放按钮?
【问题讨论】:
【参考方案1】:在发布这个问题之前,我寻找这个答案大约一个小时,然后我发布这个问题的第二个,我找到了答案......难以置信!
设置父节点(SKSpriteNode)的大小会影响 Sprite 的大小,但不会影响子节点(标签)的大小。代码如下:
[button setSize:CGSizeMake(100, 200)]; //button is the SKSpriteNode
标签文本的大小可以与按钮大小的调整分开更改。这允许按钮的位置和它的文本保持链接,但它们的大小可以单独控制。正是我需要的。或许首先对 SKSpriteNode 进行子类化有更好的解决方案,但我想不出更好的方法来保持它们之间的联系,但又保持独立。
【讨论】:
【参考方案2】:请允许我提供一个替代解决方案。假设精灵和标签是父母和孩子,如果你放大精灵:
sprite.scale = 1.25;
您只需将子标签缩小相同的数量:
label.scale = 0.75;
【讨论】:
我也想过这样做。我可能错了,但我注意到即使我每次都重新创建标签,它也会占用父级的比例乘数。有没有办法在不执行您建议的操作的情况下避免这种情况? ios 8 来得不够快。我希望他们可以更轻松地以编程方式构建菜单! 我知道这是一个超级迟到的评论,但在搜索我自己的解决方案时发现了这个,但这个解决方案不能像1*1.25 = 1.25
和 1.25*0.75 != 1
一样工作。您必须将其乘以 0.8 或除以相同的总和 1.25*0.8 = 1
和 1.25/1.25 = 1
以上是关于缩放 SKSpriteNode 而不缩放其子节点的主要内容,如果未能解决你的问题,请参考以下文章