2017-10-09 39 views
2

J'ai du mal à corriger ce message d'erreur par le CGRect.minX/Y et CGRect.MaxX/Y. "Le membre d'instance" minX "ne peut pas être utilisé sur le type" CGRect "est l'erreur. Que pourrais-je faire pour le réparer?Codage jeu SpriteKit et je reçois «membre d'instance 'minX» ne peut pas être utilisé sur le type' 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) 

} 
+0

De quel type est 'gameArea'? – nathan

+0

CGRect. Globalement, j'ai "laisser gameArea = CGRect" –

Répondre

2

minX, maxX, etc sont des propriétés d'instance, ce qui signifie qu'ils doivent être appelés sur une instance CGRect, pas le type lui-même.

changement

CGRect.minX(gameArea) 

à

gameArea.minX 

Side Note: Il est important dans Swift (et d'autres langues) de comprendre la distinction entre les types et les instances. Dans Swift, la convention consiste à nommer les types en commençant par les majuscules et les occurrences en commençant par les minuscules.

Votre ligne de code

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

devrait être modifiée pour

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

Cela rend plus facile de dire quelles sont les variables types et qui sont des instances.

+1

Merci beaucoup. Je n'ai même pas pensé à ça. –