Я пишу игру SpriteKit и получаю сообщение "Элемент экземпляра minX не может использоваться для типа" CGRect"
У меня проблемы с исправлением этого сообщения об ошибках 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 ответ
Решение
minX
, maxX
, и т. д. являются свойствами экземпляра, что означает, что они должны быть вызваны на CGRect
экземпляр, а не сам тип.
+ Изменить
CGRect.minX(gameArea)
в
gameArea.minX
Дополнительное примечание: в Swift (и других языках также важно) понимать разницу между типами и экземплярами. В Swift принято называть типы, начинающиеся с заглавных букв, и экземпляры, начинающиеся со строчных букв.
Ваша строка кода
let CheeseBlock = SKSpriteNode(imageNamed: "CheeseBlock\(randomImageNumber)")
следует изменить на
let cheeseBlock = SKSpriteNode(imageNamed: "CheeseBlock\(randomImageNumber)")
Это упрощает определение того, какие переменные являются типами, а какие - экземплярами.