2017-10-09 83 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

非常感謝。我甚至沒有想到這一點。 –

相關問題