SpriteKit的SKCropNode:位置和尺度之间的关系?

时间:2016-04-25 13:48:48

标签: xcode sprite-kit skspritenode skcropnode

我已开始使用SKCropNode进行编程。我的目的是将一个给定的图像分成更小的部分(以后可能不是矩形)用于游戏(用户必须将这些部分移动到正确的位置)。

学习代码很简单如下:

    let center = CGPoint(x: self.frame.width * 0.5, y: self.frame.height * 0.5)
    let imageNamed = "image1.jpg"
    let sprite1 = SKSpriteNode(imageNamed: imageNamed)
    sprite1.position = center

    let mask1 = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 400, height: 400))
    mask1.position = center

    let crop1 = SKCropNode()
    crop1.maskNode = mask1
    crop1.addChild(sprite1)

    crop1.position = CGPointZero
    self.addChild(crop1)

代码运行良好并显示裁剪后的图像,我可以理解何时更改一些内容,例如大小或位置,例如sprite1。

然而,当改变sprite1,mask1和crop1的几个位置时,我完全迷失了,特别是在向sprite1或crop1添加比例时。例如,如果将给定图像缩小为0.35然后分成5 x 5个片段,我不知道如何获取/显示片段{0,0}或{4,3}然后将它们显示在原始位置。换句话说,我无法控制作物的内容和位置。

关于游戏的目的,有人可以给我一个关于这些位置(sprite1,mask1和crop1)之间关系的提示或简短的导师,包括他们的尺度(例如,除了比例,我不需要扩展所有内容并且只定位需要的东西)?或者还有其他更简单的方法可以实现吗?

1 个答案:

答案 0 :(得分:0)

我必须自己回答。这里的答案不是关于SKCropNode,SKSpriteNode和掩码的位置,比例之间的关系,因为它对我来说仍然很复杂,而且类SKCropNode不是SKSpriteNode的子类,因此以后更难编程它们的实例。它可能是问题的解决方案:将给定图像分成较小的图像。

解决方案非常简单,从整个创建更小的SKTexture:

let wholeTex = SKTexture(imageNamed: "myimage.jpg")
let tex1 = SKTexture(rect: CGRectMake(0.25, 0.25, 0.5, 0.5), inTexture: wholeTex)
let sprite1 = SKSpriteNode(texture: tex1)