【问题标题】:What's the difference of setScale and size of SKSpriteNodes in SpriteKit and Swift?SpriteKit 和 Swift 中 SKSpriteNodes 的 setScale 和 size 有什么区别?
【发布时间】:2016-07-29 14:59:10
【问题描述】:

我试图从 PNG 图像中设置 SKSpriteNode 的大小(可以,只是:

test = SKSpriteNode(imageNamed: "myImage")

但是在调整大小时,我不确定我应该使用test.setScale 还是test.size。 有什么区别,我应该什么时候使用它们?

【问题讨论】:

    标签: ios swift sprite-kit skspritenode


    【解决方案1】:

    setScale():

    设置节点的 xScaleyScale 属性。这两个参数是节点及其子节点的宽度(对于 xScale)和高度(对于 yScale)相乘的比例因子。

    代码示例:

    spaceship.setScale(0.50) // decreased scale to it's half size
    

    size(): 表示精灵的尺寸widthheight),以磅为单位。

    代码示例:

    spaceship.size = CGSizeMake(100.0, 70.0) // Re-size the dimensions to these values
    

    什么时候使用setScale,什么时候使用size

    通常setScale 用于增加或减少精灵的比例因子,例如SKAction.scaleTo 用于放大或缩小。

    size 经常使用,因为您可以用点表示您想要对您的精灵执行的确切值。

    【讨论】:

      【解决方案2】:

      当您想要更改 SKSpriteNode 的特定大小而不影响该 sprite 节点的任何子节点的大小时,您应该使用 size。

      缩放精灵节点不仅改变节点的大小(比例),它还适当地(按比例)缩放精灵节点的所有子节点。

      如果精灵节点没有子节点,那么大小和比例之间没有实际区别。

      注意:我发现在无关紧要的情况下使用 size 很有帮助,这样我就知道 1.0 的比例始终是默认大小 - 对于使用 scaleTo 而不是 scaleBy 并再次返回默认大小的动画来说很方便。

      【讨论】:

        【解决方案3】:

        如果您使用的是 spriteNode,我会使用 .setScale、或 .xScale 或 .yScale,因为它们是专门用于 sprites 的。 .size 也可用于 UIKit 中标签和文本视图的大小。

        假设您希望精灵大 2 倍:

        theNode.xScale = 2.0
        theNode.yScale = 2.0
        

        请注意,它们必须是浮点数,而不是整数

        总而言之,.setScale 适用于 spriteNodes 和一般图像,而 .size 适用于大量非图像的东西,例如标签等。因此,如果您使用的是精灵,请使用 .setScale。如果要调整块的大小,请使用 .size。

        如果您认为这是正确答案,请将其标记为正确答案,以便帮助其他人解决此问题。谢谢!

        【讨论】:

          【解决方案4】:

          我总是使用.size 属性调整大小,因为我相信当您使用.setScale / .xScale / .yScale 时,节点的物理体不会自动缩放。如果缩放节点,则需要重做physicsBody 的大小。

          【讨论】:

            猜你喜欢
            • 2013-10-04
            • 2021-09-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-03-03
            • 2018-03-21
            相关资源
            最近更新 更多