编码SpriteKit游戏,我收到“实例成员'minX'不能用于'CGRect'类型
问题描述:
我无法通过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)
}
答
minX
,maxX
等都是实例属性,这意味着他们需要在一个CGRect
实例,而不是类型本身被调用。
变化
CGRect.minX(gameArea)
到
gameArea.minX
侧面说明:理解类型和实例之间的区别是在斯威夫特(和其他语言)重要。在Swift中,约定是以大写字母开头的类型和以小写字母开头的实例命名。
你的代码
let CheeseBlock = SKSpriteNode(imageNamed: "CheeseBlock\(randomImageNumber)")
行应改为
let cheeseBlock = SKSpriteNode(imageNamed: "CheeseBlock\(randomImageNumber)")
这使得它更容易判断哪些变量类型,哪些是实例。
+1
非常感谢。我甚至没有想到这一点。 –
'gameArea'是什么类型? – nathan
CGRect。全球我有“让gameArea = CGRect” –