编码SpriteKit游戏,我正在接收"实例成员' minX'不能用于类型' CGRect"

时间:2017-10-09 21:11:48

标签: swift sprite-kit cgrect cgfloat

我无法通过CGRect.minX / Y和CGRect.MaxX / Y修复此错误消息。 "实例成员' minX'不能用于类型' CGRect"是错误。我该怎么做才能解决它?

func spawnNewDisc(){

    var randomImageNumber = arc4random()%4
    randomImageNumber += 1

    let CheeseBlock = SKSpriteNode(imageNamed: "CheeseBlock\(randomImageNumber)")
    CheeseBlock.zPosition = 2
    CheeseBlock.name = "CheeseObject"

    let randomX = random(min: CGRect.minX(gameArea) + CheeseBlock.size.width/2,
                         max: CGRect.maxX(gameArea) - CheeseBlock.size.width/2)

    let randomY = random(min: CGRect.minY(gameArea) + CheeseBlock.size.height/2,
                         max: CGRect.maxY(gameArea) - CheeseBlock.size.height/2)

    CheeseBlock.position = CGPoint(x: randomX, y: randomY)
    self.addChild(CheeseBlock)

}

1 个答案:

答案 0 :(得分:3)

minXmaxX等是实例属性,这意味着需要在CGRect实例上调用它们,而不是类型本身。

更改

CGRect.minX(gameArea)

gameArea.minX

旁注:在Swift(以及其他语言)中理解类型和实例之间的区别非常重要。在Swift中,惯例是命名以大写字母开头的类型和以小写字母开头的实例。

您的代码行

let CheeseBlock = SKSpriteNode(imageNamed: "CheeseBlock\(randomImageNumber)")

应改为

let cheeseBlock = SKSpriteNode(imageNamed: "CheeseBlock\(randomImageNumber)")

这样可以更容易地判断哪些变量是类型,哪些是实例。