2017-10-09 7 views
2

CGRect.minX/Y 및 CGRect.MaxX/Y에서이 오류 메시지를 수정하는 데 문제가 있습니다. "인스턴스 멤버 'minX'는 'CGRect'유형에서 사용할 수 없습니다. 오류입니다. 문제를 해결하려면 어떻게해야합니까?SpriteKit 게임 코딩 중 " 'CGRect'유형에서 인스턴스 멤버 'minX'를 사용할 수 없습니다.

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. 전 세계적으로 "let gameArea = CGRect" –

답변

2

minX, maxX 등 그들이 CGRect 예,하지 유형 자체에 호출 할 필요가 의미 인스턴스 속성이다.

변경

CGRect.minX(gameArea) 

사이드 참고

gameArea.minX 

에 : 그것은 유형 및 인스턴스의 차이를 이해하는 스위프트 (다른 ​​언어뿐만 아니라)에서 중요합니다. Swift에서 대문자와 소문자로 시작하는 인스턴스로 시작하는 유형을 명명하는 것이 관례입니다. 코드

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

귀하의 라인이보다 쉽게 ​​종류 및 인스턴스있는 어떤 변수 말할 수 있습니다

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

로 변경해야합니다.

+1

대단히 감사합니다. 나는 그런 생각조차하지 않았다. –

관련 문제