2017-03-15 1 views
1

「オーバーライドfunc didMove(表示する:SKView){」内でスプライトを更新しようとしています時間は変わるが、常に一定の時間にとどまる。varを更新するにはどうしたら移動しなかったのか?

var randomTime = 1.9 
let spritestater = SKSpriteNode(imageNamed: "spritea1.png") 
let sprite1 = SKAction.setTexture(SKTexture(imageNamed:"spritea1.png")) 
let sprite2 = SKAction.setTexture(SKTexture(imageNamed: "sprite1b.png")) 

override func didMove(to view: SKView) { 
    spritestater.scale(to: self.frame.size) 
    spritestater.anchorPoint = CGPoint(x: 1, y: 1) 
    spritestater.zPosition = 1 
    spritestater.position = CGPoint(x: self.frame.maxX, y: self.frame.maxY) 
    addChild(spritestater) 

    let anamatesprite = SKAction.repeatForever(SKAction.sequence(
     [sprite1, 
     SKAction.wait(forDuration: TimeInterval(randomTime)), 
     sprite2, 
     SKAction.wait(forDuration: 0.3), 
     ])) 
    spritestater.run(anamatesprite) 
} 

override func update(_ currentTime: TimeInterval) { 
    randomTime = Double(arc4random_uniform(UInt32(4.5))) 
} 
+0

@Fariniを変更し、新しい時刻にアクションを実行すること、それはあなたを紹介しますいくつかの編集を使用することができます、randomTimeは定数ではありません。 OPは、クラス宣言(仮定)内で適切にセットアップし、varとletを使用しています。 –

答えて

1

あなたのアクションはすでに実行されていますが、randomTimeの値を変更しても、すでに実行中のアクションには影響しません。 didMove(view :)は、ページが最初にロードされたときにのみ呼び出されるため、そこのアクションは決して再び実行されません。

は私があなたを示していますことは、これを実行しているの恐ろしい方法ですが、私は質問があることに同意しながら、randomTimeが

override func didMove(to view: SKView) { 
    spritestater.scale(to: self.frame.size) 
    spritestater.anchorPoint = CGPoint(x: 1, y: 1) 
    spritestater.zPosition = 1 
    spritestater.position = CGPoint(x: self.frame.maxX, y: self.frame.maxY) 
    addChild(spritestater) 

    runActionOnSprite() 
} 

func runActionOnSprite() { 
    let anamatesprite = SKAction.repeatForever(SKAction.sequence(
    [sprite1, 
    SKAction.wait(forDuration: TimeInterval(randomTime)), 
    sprite2, 
    SKAction.wait(forDuration: 0.3), 
    ])) 
    spritestater.run(anamatesprite) 
} 

override func update(_ currentTime: TimeInterval) { 
    if !spritestater.hasActions() 
     randomTime = Double(arc4random_uniform(UInt32(4.5))) 
    } 
} 
関連する問題