我试图从PNG图像中设置SKSpriteNode
的大小(好吧,只有:
test = SKSpriteNode(imageNamed: "myImage")
但是在调整大小时,我不确定是否应该使用test.setScale
或test.size
。
有什么区别,什么时候应该使用它们?
答案 0 :(得分:6)
setScale()
:
设置节点的 xScale 和 yScale 属性。这两个参数是比例因子,它将节点及其子节点的宽度(对于xScale)和高度(对于yScale)相乘。
代码示例:
spaceship.setScale(0.50) // decreased scale to it's half size
size()
:
以磅为单位表示精灵的尺寸(宽度和高度)。
代码示例:
spaceship.size = CGSizeMake(100.0, 70.0) // Re-size the dimensions to these values
您何时使用setScale
,何时使用size
?
通常setScale
用于增加或减少关于比例因子的精灵,例如查看用于放大或缩小的SKAction.scaleTo
。
size
经常被使用,因为你可以用点来表达你想要对你的精灵做的确切值。
答案 1 :(得分:5)
当您想要更改SKSpriteNode 的特定大小而不影响该精灵节点的任何子节点的大小时,您应该使用大小。
缩放精灵节点不仅会改变节点的大小(比例),它还会适当地(按比例)缩放所有精灵节点的子节点。
如果精灵节点没有子节点,那么尺寸和比例之间没有实际差别。
注意:我发现在无关紧要的情况下使用大小是有帮助的,因此我知道1.0的缩放始终是默认大小 - 使用scaleTo代替scaleBy并再次返回默认大小的动画很方便。
答案 2 :(得分:2)
如果你使用的是spriteNode,我会使用.setScale,或.xScale或.yScale,因为它们专门用于sprite。 .size也可用于UIKit中标签和文本视图的大小。
让我们说你想要精灵大2倍:
theNode.xScale = 2.0
theNode.yScale = 2.0
请注意,它们必须是浮点数,而不是整数
总而言之,.setScale适用于spriteNodes和图像,而.size适用于大量不是图像的事物,如标签等。因此,如果您使用的是精灵,请使用.setScale。如果要调整块的大小,请使用.size。
如果您认为这是正确答案,请将其标记为正确,以便其他人帮助解决此问题。谢谢!
答案 3 :(得分:0)
我总是使用.size
属性调整大小,因为我相信当您使用.setScale
/ .xScale
/。yScale
时,节点的物理主体不会自动缩放。如果缩放节点,则需要重做physicsBody
的大小。