2016-06-30 6 views
1

ちょっと質問があります:D3.jsアニメーションを入力

どのようにして、解析されたときに線やパスを描画するのですか?私はそれが突然現れたくないのですが、トランジション()や関連するアニメーションエフェクトを持っているので、あなたが描いているようにスムーズに表示されます。あらかじめx軸から上へ、上から下へと始まっても大丈夫です。いずれにしても簡単です。

私の.attr引数の順序によっては、パスが表示され、遷移しない、またはdevツールが私のパスが関数ではないと言います。ここで私が働いているものです:問題を入力の上、アニメーションは別に

var max_line = d3.svg.line() 
    .x(function(d) { return scale(d.local_max); }) 
    .y(function(d) { return yscale(d.Y); });  

svg.append('path') 
    .attr('transform', 'translate(' +(margins.left)+','+margins.top+')') 
    .attr('fill', 'none') 
    .attr('stroke', 'white') 
    .style('stroke-width', '4px') 
    .style('stroke-dasharray', '5,3') 
    .transition() 
    .datum(data) 
    .duration(3000) 
    .attr('d', max_line); 

、私のストロークダッシュアレイは適用されませんなぜ私に言うことができる誰のためのボーナスポイント。それはいつも退屈な実線として現れます。

私の質問は、stroke-dasharrayと組み合わせてアニメーションを入力するのが簡単ではないため、これまでの質問と異なる場合があります。

+0

円滑な開始から終了までのアニメーションを破線のスタイルパスでどのように使用するかを説明してください。つまり、実線でアニメートする代わりに、最初から最後まで破線で実際にアニメートします。だから、0では破線、最後には一定の間隔を置いた破線です。アニメーション全体を通して「ストロークダッシュアレイ」、「5,3」と言ってください。他のすべての例では実線のアニメーションが使用されています。私は破線のアニメーションが必要です。 –

答えて

3

ファーストは、このようにパスを作る:

var path = svg.append("path") 
     .attr("d", max_line) 
     .attr('fill', 'none') 
     .attr('stroke', 'white') 
     .style('stroke-width', '4px') 
     .attr("fill", "none"); 

は、パスの長さの合計を取得:

var totalLength = path.node().getTotalLength(); 

は今totallengthを使用してストロークdasharrayを作る(ラインがでないように行われ見える)。下のスニペットに示すように、後でstroke-dashoffsetを全長から0に移行します。

path 
    .attr("stroke-dasharray", totalLength + " " + totalLength) 
    .attr("stroke-dashoffset", totalLength) 
    .transition() 
    .duration(2000) 
    .ease("linear") 
    .attr("stroke-dashoffset", 0); 
+0

偉大な仕事、私はまだストロークダッシュアレイに問題がありますが、アニメーションパーツは現在完全に動作しています。 .attr( 'fill'、 'none')の2つの出来事について疑問に思うかもしれません。なぜ、ダッシュ配列が機能しないのでしょうか?あるいは、実際に2が必要ですか? –

+0

'.attr( 'fill'、 'none')'はパスのfill属性を設定するためのものです。 '.attr( 'fill'、 'red')'でフィルパスを表示できるか。それはそれ自体について説明する必要があります。 – Cyril

+0

そうです、その部分は分かります。なぜスニペットに2つあるのですか?私はちょうどストロークダッシュアレイが機能していない理由を撃つことを試みていると私は多分それが何かを持っていたと思った? –