2017-11-18 31 views
2

私はフレーム(ar.js)で360°回転のアニメーションを持っています。私は一時停止してそれを続行したいのですが、私はそれをやりなおすことができますが、最初からやり直します。aframe/animation:一時停止して再開する方法は?

<a-entity> 
    <a-entity 
     gltf-model="#tree-gltf"> 
    </a-entity> 
    <a-animation 
     begin="rotation-begin" 
     end="rotation-end" 
     attribute="rotation" 
     to="0 360 0" 
     direction="alternate" 
     dur="10000" 
     repeat="indefinite"> 
    </a-animation> 
</a-entity> 

Animation documentation「始まり」と「終わり」のイベントが、一時停止したときに初めからではなく現在の値から再起動して「開始」へのアクセス権を与えます。

Entity documentation同じものであるpause()とplay()へのアクセス権を与えます。 「開始」属性が存在する場合、Play()はまったく機能しないため、イベントまたは関数のいずれかを選択する必要があります。 しかし、play()も、アニメーションを一時停止した場所からではなく、最初からアニメーションを再開します。

属性durを1時間に設定してアニメーションを遅くして一時停止のように見せても、醜いトリックを試みましたが、「dur」を10秒に戻しても再起動しません。

どのようなアイデアが役に立ちますか?

+0

アニメーションで 'fill = forwards'を試してみましたか?アニメーションが一時停止する前に新しい値が設定される可能性があります。そのため、アニメーションが再開するとリセットされません。それ以外の場合は、fillを別のアニメーションと共に使用することもできます。 –

+0

fill = forwardがデフォルト値です。そうです。 私はまた、一度停止/一時停止したフレームの位置を定義するので、他のすべての値を成功させずに試しました。とにかくありがとう。 – MadsenFr

答えて

2

Kevin Ngoのanimation-componentを使用すると、一時停止/再開が適切にサポートされます。

コンポーネントを含むだけでなく、あなたのコードは次のようになります。 rotation-beginrotation-pauseとあなたがトリガすることができ rotation-resume

<a-entity 
    animation="property:rotation; startEvents:rotation-begin; pauseEvents: rotation-pause; resumeEvents: rotation-resume; to:0 360 0; dir:alternate; dur:10000; repeat:indefinite" 
    gltf-model="#tree-gltf"> 
</a-entity> 

これはあなたに3つのイベントを提供します。

See a demo here

+0

ありがとう、私は[リンク](https://github.com/ngokevin/kframe/tree/master/components/animation/)Aframe /アニメーションのドキュメントの上に逃した。それは私が "repeat:indefinite"を "loop:true"に置き換えたrestartイベントを使用する[CodePen](https://codepen.io/MadsenFr/pen/ZaoXEM)を参照してください。 – MadsenFr

関連する問題