2017-06-28 21 views
0

私は右に左/スピン何かをアニメーション化しようとしているが、私は spinLeft(呼び出すたび)またはspinRight()その後、アニメーションは常に言い換えれば、フレームから0SKActionの現在のアニメーションフレームから現在のテクスチャを取得する方法は?

を開始し、私はできるようにしたいですその後、フレーム4と反対方向に スピンは、今のところ、それはあなたがこれを行うことができます0

var textures = [SKTexture]() // Loaded with 10 images later on. 
var sprite = SKSpriteNode() 

func spinLeft() { 
    let action = SKAction.repeatForever(.animate(with: textures, timePerFrame: 0.1)) 
    sprite.run(action) 
} 

func spinRight() { 
    let action = SKAction.repeatForever(.animate(with: textures, timePerFrame: 0.1)).reversed() 
    sprite.run(action) 
} 

答えて

0

をフレームにリセットし、停止し、10個のフレームのうち、スピン何か4を言うために(構文は少しかもしれオフ、しかしあなたはポイントを得る):

ここでのキーは.index(of:...)です。インデックスを取得します。

func spinUp() { 
    let index = textures.index(of: sprite.texture) 
    if index == textures.count - 1 { 
     sprite.texture = textures[0] 
    } 
    else { 
     sprite.texture = textures[index + 1] 
    } 
} 

func spinDown() { 
    let index = textures.index(of: sprite.texture) 
    if index == 0 { 
     sprite.texture = textures[textures.count - 1] 
    } 
    else { 
     sprite.texture = textures[index - 1] 
    } 
} 

func changeImage(_ isUp: Bool, _ amountOfTime: CGFloat) { 
    let wait = SKAction.wait(duration: amountOfTime) 
    if isUp { 
     run(wait) { 
      self.imageUp() 
     } 
    } 
    else { 
     run(wait) { 
      self.imageDown() 
     } 
    } 
} 

あなたはスワイプジェスチャー認識のようなものを使用している場合、あなたはそれがISUPブール値とchangeImage機能についてamountOfTimeのためにそのスワイプの速度を設定する方向だ使用することができます。

changeImageはイメージを1回だけ変更するため、別の場所でこのイメージを処理するか、最終的にスピンしたり消滅させたりする必要がある場合は別の関数を作成する必要があります。

希望すると便利です。

+0

これは素晴らしかったです!実装のバージョンは次のとおりです。 https://stackoverflow.com/questions/44725841/360-degrees-spinnable-object-from-a-photographed-real-object/44792902#44792902 – Fluidity

関連する問題