2017-10-09 85 views
2

我无法通过CGRect.minX/Y和CGRect.MaxX/Y修复此错误消息。 “实例成员'minX'不能用于类型'CGRect'是错误。我能做些什么来解决它?编码SpriteKit游戏,我收到“实例成员'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) 

} 
+0

'gameArea'是什么类型? – nathan

+0

CGRect。全球我有“让gameArea = CGRect” –

回答

2

minXmaxX等都是实例属性,这意味着他们需要在一个CGRect实例,而不是类型本身被调用。

变化

CGRect.minX(gameArea) 

gameArea.minX 

侧面说明:理解类型和实例之间的区别是在斯威夫特(和其他语言)重要。在Swift中,约定是以大写字母开头的类型和以小写字母开头的实例命名。

你的代码

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

行应改为

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

这使得它更容易判断哪些变量类型,哪些是实例。

+1

非常感谢。我甚至没有想到这一点。 –

相关问题