Ios SKSpriteNode宽度随变量增加而增加,但赢得';不减少?
我已经建立了一个SKSpriteNode作为进度/健康酒吧。 宽度设置为一个变量。 此变量随计时器而减小,但节点的宽度不随计时器而减小? 如果我将变量设置为增加,那么节点宽度将增加没有问题,但是如果我将变量设置为减少,则不起作用。 恐怕我犯了一个简单的错误。 下面是可以工作的代码,但是如果我将+=更改为-=Ios SKSpriteNode宽度随变量增加而增加,但赢得';不减少?,ios,swift,sprite-kit,progress,Ios,Swift,Sprite Kit,Progress,我已经建立了一个SKSpriteNode作为进度/健康酒吧。 宽度设置为一个变量。 此变量随计时器而减小,但节点的宽度不随计时器而减小? 如果我将变量设置为增加,那么节点宽度将增加没有问题,但是如果我将变量设置为减少,则不起作用。 恐怕我犯了一个简单的错误。 下面是可以工作的代码,但是如果我将+=更改为-= class GameScene: SKScene, SKPhysicsContactDelegate { var health = SKSpriteNode() var healthTim
class GameScene: SKScene, SKPhysicsContactDelegate {
var health = SKSpriteNode()
var healthTimer = Timer()
var progressValue = 350
func startHealthTimer() {
progressValue += 20
}
override func didMove(to view: SKView) {
healthTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.startHealthTimer), userInfo: nil, repeats: true)
}
override func update(_ currentTime: TimeInterval) {
let healthTexture = SKTexture(imageNamed: "health.png")
health = SKSpriteNode(color: .white, size: CGSize(width: progressValue, height: 30))
health.position = CGPoint(x: -self.frame.width / 2 + healthTexture.size().width / 2, y: self.frame.height / 2)
health.zPosition = 2
self.addChild(health)
}
每次更新都会添加一个新的精灵而不删除旧精灵。一段时间后,你会有很多精灵在彼此的上面。新精灵将变短,但旧精灵仍在显示,因此该栏似乎不会变短
class GameScene: SKScene, SKPhysicsContactDelegate {
var health: SKSpriteNode?
var healthTimer = Timer()
var progressValue = 350
func startHealthTimer() {
progressValue += 20
}
override func didMove(to view: SKView) {
healthTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.startHealthTimer), userInfo: nil, repeats: true)
}
override func update(_ currentTime: TimeInterval) {
if let health = self.health {
health.removeFromParent()
}
let healthTexture = SKTexture(imageNamed: "health.png")
self.health = SKSpriteNode(color: .white, size: CGSize(width: progressValue, height: 30))
self.health.position = CGPoint(x: -self.frame.width / 2 + healthTexture.size().width / 2, y: self.frame.height / 2)
self.health.zPosition = 2
self.addChild(self.health)
}
}
每次更新都会添加一个新的精灵而不删除旧精灵。一段时间后,你会有很多精灵在彼此的上面。新精灵将变短,但旧精灵仍在显示,因此该栏似乎不会变短
class GameScene: SKScene, SKPhysicsContactDelegate {
var health: SKSpriteNode?
var healthTimer = Timer()
var progressValue = 350
func startHealthTimer() {
progressValue += 20
}
override func didMove(to view: SKView) {
healthTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.startHealthTimer), userInfo: nil, repeats: true)
}
override func update(_ currentTime: TimeInterval) {
if let health = self.health {
health.removeFromParent()
}
let healthTexture = SKTexture(imageNamed: "health.png")
self.health = SKSpriteNode(color: .white, size: CGSize(width: progressValue, height: 30))
self.health.position = CGPoint(x: -self.frame.width / 2 + healthTexture.size().width / 2, y: self.frame.height / 2)
self.health.zPosition = 2
self.addChild(self.health)
}
}
我理解。如何移除新精灵的每个精灵?对旧精灵调用
removeFromParent
。太好了,可以了!有没有一种方法可以使宽度从右边缘减小,而不是从节点的任意一个边缘减小?您设置的位置是精灵的中心,因此计算中心位置,以使左边缘保持在同一位置。我理解。如何移除新精灵的每个精灵?对旧精灵调用removeFromParent
。太好了,可以了!有没有一种方法可以使宽度从右边缘减小,而不是从节点的任意一条边缘减小?您要设置的位置是精灵的中心,因此计算中心的位置,以使左边缘保持在同一点上。