2015-07-11 1 views
0

У меня есть строка SVG, которая через 5 секунд получает новые коинданаты x1 y1. Как применить переход к линии так, чтобы она плавно перемещалась. В прикрепленном коде я могу изменить его цвет через плавный переход, но местоположение мигает с одного места на другое.HTML SVG Line и применение перехода для изменения атрибутов x1 y1 в javascript

<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<head> 
</head> 

<body> 
    <script language="JavaScript"> 
     setInterval(function trackuser() 
     { 
      var x_one = 45; 
      var y_one = 13; 
      var r_one = 50; 
      var x_two = 55; 
      var y_two = 85; 
      var r_two = 36; 
      var x_thr = 70; 
      var y_thr = 35; 
      var r_thr = 28; 

      var first = (-Math.pow(x_two,2)+Math.pow(x_thr,2)-Math.pow(y_two,2)+Math.pow(y_thr,2)+Math.pow(r_two,2)-Math.pow(r_thr,2))/(-2*y_two+2*y_thr); 
      var secon = (-Math.pow(x_one,2)+Math.pow(x_two,2)-Math.pow(y_one,2)+Math.pow(y_two,2)+Math.pow(r_one,2)-Math.pow(r_two,2))/(-2*y_one+2*y_two); 
      var third = ((2*x_one-2*x_two)/(-2*y_one+2*y_two))-((2*x_two-2*x_thr)/(-2*y_two+2*y_thr)); 
      var x = (first-secon)/third; 
      var y = ((2*x_one-2*x_two)/(-2*y_one+2*y_two))*x+secon; 

      document.getElementById("line").setAttribute("x2", x+'%'); 
      document.getElementById("line").setAttribute("y2", y+'%'); 
      document.getElementById("line").style.stroke = "blue"; 
      document.getElementById("line").style.WebkitTransition = "all 2s";  // Code for Safari 3.1 to 6.0 
      document.getElementById("line").style.transition = "all 2s";  // Standard syntax 
     },5000); 
    </script> 
    <div> 
     <svg height="100%" width="100%" style="position:absolute; top:0%; left:0%"> 
      <line id="line" x1="45%" y1="13%" x2="55%" y2="70%" style="stroke:rgb(255,0,0);stroke-width:3"></line> 
     </svg> 
    </div> 
</body> 
</html> 

ответ

0

Вы не можете (пока) анимировать координаты с помощью CSS. Вам придется оживить их самостоятельно с помощью JS. Либо вручную (например, с requestAnimationFrame, либо Timeout), либо используйте одну из библиотек JavaScript SVG.

 Смежные вопросы

  • Нет связанных вопросов^_^