javascriptには、bezierCurveToまたはquadraticCurveToを使用して描いたパスに沿ってオブジェクト(イメージなど)をアニメーション化するビルトイン方法がありますか?私がしようとしているのは、正確にボールの軌跡とランディングスポットをアニメーション化して、それが役立つ場合です。bezierCurveToまたはquadraticCurveToに沿ってアニメーション
答えて
組み込みの方法は申し訳ありませんが、JavaScriptの
にあります。本当にそれはここでの短い答えです。少なくともキャンバスにはない。
ここではですが、SVGのパスに沿ってアニメートする方法です。実際には、SVGに沿ってアニメーションを作成し、Canvasで使うようにx、yポイントをすべてキャプチャすることはできますが、それはおそらく実際には非効率的です。
もう1つの方法は、数学を使ってベジェ曲線を二等分する(分割する)ことです。この曲線は、同時にその曲線の中間点になります。その後、2つの小さな曲線を二等分する。これを何度もやり直し、最終的に、アニメーション化するオブジェクトの軌跡をプロットするために使用できる中間点のリストを取得します。
私はこれがちょっと遅いと知っていますが、これはあなたが探しているものかもしれません。
例:http://joelb.me/scrollpath/ のGit:ブラウザのサポートはまだむらですがhttps://github.com/JoelBesada/scrollpath
、あります:あなたは破線を使用することができます。
あなたはドロー機能を持っている場合:あなたは、最初のダッシュスペースがあなたより長いことを確認するために持っている
var start = null;
var duration = 1000;
var length = 150; // I'm guessing here, but you can calculate it
function step(timestamp) {
if(start === null) { start = timestamp; }
canvas.width = canvas.width;
var progress = Math.min((timestamp - start)/duration,1);
ctx.setLineDash([0,length,3,0]);
ctx.lineWidth = 3;
ctx.lineDashOffset = progress * length;
draw();
ctx.stroke();
if(progress < 1) {
requestAnimationFrame(step);
}
}
requestAnimationFrame(step);
:
function draw() {
ctx.beginPath();
ctx.moveTo(20,20);
ctx.quadraticCurveTo(100,100,30,90);
}
は、あなたは、このようにアニメーションを設定することができますライン全体を移動し、オフセットをアニメートすると、短いダッシュ(あなたの「ドット」)があなたのパスに沿ってスライドします。 lineCap
で丸めることができます。作業デモ:http://jsbin.com/UFOTavoX/1
setLineDash
およびlineDashOffset
のサポートは普遍的ではありません。それについての詳細はhttp://www.rgraph.net/blog/2013/january/html5-canvas-dashed-lines.htmlです。
- 1. カーブに沿ってアニメーション画像ビュー
- 2. 特定のパスに沿ってオブジェクトのアニメーションを行いたい
- 3. EKG信号のWPFアニメーション。パスに沿ってアニメーションオブジェクト
- 4. パスに沿った勾配
- 5. ディレクトリパスに沿ったACL
- 6. ジオメトリパスに沿ったDirect2Dグラジエント
- 7. パスに沿ったOpenGLチューブ
- 8. AS3/Processing/D3の複数のベジェパスに沿ってカメラをアニメーション化しますか?
- 9. UIBezierPathに沿って完全なCALayerアニメーションの割合をアニメーション化する方法は?
- 10. パスに沿って回転する図形をアニメーション化する方法
- 11. C#イベントに沿ったバブリング/パススルー
- 12. Bスプラインに沿った長さ測定
- 13. パスに沿ったグラデーションを使用
- 14. 次元に沿ったオブジェクトのサイズ?
- 15. ベジェ曲線に沿った位置球
- 16. MKPolyLineView(MKPolylineRenderer)に沿った勾配
- 17. 行に沿ったポイントの増分
- 18. GWT CellTable。行に沿ったテキスト
- 19. ggplot2 geom_segment()に沿った色勾配
- 20. JavaFXは線グラフの軸に沿って移動します
- 21. CAKeyframeanimationは、パスに沿ってUIViewを移動します
- 22. SQLクエリ - ピボットテーブルの行に沿って
- 23. matplotlib - プロットラインに沿ってマーカーカラーを変更
- 24. numpy軸に沿って分割する
- 25. 宝石talib_rubyためにgithubのREADMEに沿って次のヘッダーファイル
- 26. d3.jsを使用してGeoJSONパスに沿ってオブジェクトをアニメーション化する方法は?
- 27. 経路に沿ってカスタムGoogleマップマーカーをアニメーション化するにはどうすればよいですか?
- 28. UIImageViewを円弧に沿ってアニメーション化するにはどうすればよいですか?
- 29. パスに沿ってPHPのテキストをカーブしていますか?
- 30. 湾曲したパスに沿ってビューまたは画像の動きをアニメーション化するにはどうすればよいですか?
重力の影響を受けたボールで、そのためにカーブを使用している場合、重力をモデル化する方が、任意の軌道をたどるよりも重力をモデル化する方が簡単でしょう。 – Beska
ありがとうBeska。私が持っている問題は、ボールを特定の場所に着陸させることです。私はこれを行う数学があると確信しているが、ちょうどそれが何であるかを見ていないか分からない。 –
うん。うん間違いなく数学があります。私は簡単に "ポイントxの土地"の要件を満たす四分円を思いつくことができましたが、重力式を思いつくのはやや難解です。数回だけ推測するほうが簡単かもしれません。たぶんそれは地面から始まり、最初のYの速度Yで起動すると仮定することによって、あなたが望む高さに達するまで様々な重力値で遊んでいくことができます。それから、あなたは頂点にしたいx、y点に達するまでx速度Xを混乱させることができます。それではx、yの速度を-X、0で始めるのは単なる問題です。 – Beska