3 votes

Dans D3 V4, comment utiliser correctement .ease("bounce") ?

Voici mon code :

<html>
<head>
<meta charset="UTF-8">
<title>circle</title>
</head>
 
<body>
    <script src="http://d3js.org/d3.v4.min.js"></script>
    <script> 
        var width = 400;    
        var height = 400;    
        var svg = d3.select("body")    
                    .append("svg")     
                    .attr("width",width)     
                    .attr("height",height);     

        var circle1 = svg.append("circle")  
                         .attr("cx", 100)  
                         .attr("cy", 100)   
                         .attr("r", 45) 
                         .style("fill","green");
        circle1.transition()
            .duration(1000)  //延迟1000ms
            .attr("cx", 300);

        var circle2 = svg.append("circle")
                         .attr("cx", 100)
                         .attr("cy", 100)
                         .attr("r", 45)
                         .style("fill","green");

        circle2.transition()
            .duration(1500)
            .attr("cx", 300)
            .style("fill", "red");

        var circle3 = svg.append("circle")
                         .attr("cx", 100)
                         .attr("cy", 100)
                         .attr("r", 45)
                         .style("fill","green");
        circle3.transition()
            .duration(2000)
            .transition()
            .ease("bounce")
            .attr("cx", 300)
            .style("fill", "red")
            .attr("r", 25);

    </script>     
</body>
</html>

Quand j'apprendrai à utiliser le .ease("bounce") dans d3 v4.x, l'erreur est toujours sautée en html:45. Dans l'introduction officielle : .ease("bounce") doit maintenant être utilisé comme ceci :

d3.easeBounce(t)

mais il ne fonctionne pas non plus, donc je ne sais pas comment le modifier. Pourriez-vous me donner une bonne introduction ? Merci !

7voto

altocumulus Points 13034

La documentation sur transition.ease([value]) nous dit, que

En valeur doit être spécifié comme une fonction.

Par conséquent, il suffit de passer dans la fonction d'assouplissement d3.easeBounce sans l'appeler (notez qu'il n'y a pas de parenthèses à la suite de d3.easeBounce ):

circle3.transition()
  .duration(2000)
  .transition()
  .ease(d3.easeBounce)   // Pass in the easing function

1voto

陈方旭 Points 11

Je suis d'accord avec Altocumulus réponse, mais j'essaie de me débarrasser d'un des moyens .transition() et il fonctionnera bien.

circle3.transition()
  .duration(2000)
  .ease(d3.easeBounce)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X