我有一个超类,其中一个向量被创建为成员变量。
class GameScene: SKScene, SKPhysicsContactDelegate {
var floatingBlockPositions: [CGPoint] = [CGPointMake(130.0, 70.0)]
}
我在像这样的子类中重写它:
class StreetFight: GameScene {
override var floatingBlockPositions: [CGPoint] {
get {
return [CGPointMake(400.0, 70.0), CGPointMake(250.0, 95.0)]
}
set (newValue) {
newValue
}
}
}
我有一个类方法,它会改变它以设置另一个参数。
temp = 0
for _ in floatingBlockPositions {
floatingBlockPositions[temp].y = floatingBlockPositions[temp].y + positionsForFirstBlock.y + (groundBlockSize.height / 2)
let aerialBlock = SKSpriteNode(imageNamed: "aerialBlock")
aerialBlock.position = floatingBlockPositions[temp]
temp++
}
调试之后,我看到子类中的setter正在被调用,但它没有被正确设置,因为函数中的equals运算符只是试图设置向量中一个CGPoints的一部分, setter没有设置处理,没有双关语意图。如何在子类中编写setter,以便识别需要设置的floatBlockPositions的哪一部分并设置它。如果可能的话,我应该重载该方法,还是有更好的方法呢?
答案 0 :(得分:0)
您已将floatingBlockPositions
从已存储的属性更改为计算变量(因为它具有get
)。因此,您无法为其存储新值。但是,您可以创建一个单独的私有var
并设置它,然后在get
中,如果已设置,则返回该新值。