2013-03-19 78 views
0

如何使我的文字在画布上的移动动画更平滑(较少交错的动作)?如何让我的文字在画布上的移动动画更平滑(锯齿状运动更少)?

页面完全按照我希望的那样运行,但文本的运动非常锯齿状。我怎样才能让它在这个速度下更平滑?

代码:

<style> 
       #cvs { 
        position: absolute; 
        top: 0px; 
        left: 0px; 
       } 
      </style> 
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.3.js'></script> 
     <script type="text/javascript"> 
      var context; 
      var text = ""; 
      var textDirection =""; 

      $(function() 
      { 
       context = document.getElementById("cvs").getContext("2d");    
       setInterval("animate()", 360); 

       textDirection ="right"; 
       textXpos = 5; 
       text = "This is my video..";  
      }); 

      function animate() {    
       // Clear screen 
       context.clearRect(0, 0, 500, 500); 
       context.globalAlpha = 1; 
      //context.fillStyle = '#fff'; 
      // context.fillRect(0, 0, 500, 500);  

       var metrics = context.measureText(text); 
       var textWidth = metrics.width; 
       if (textDirection == "right") { 
        textXpos += 10; 

        if (textXpos > 500 - textWidth) { 
         textDirection = "left"; 
        } 
       } 
       else { 
        textXpos -= 10; 

        if (textXpos < 10) { 
         textDirection = "right"; 
        }      
       } 

       context.font = '20px _sans'; 
       context.fillStyle = 'white'; 
       context.textBaseline = 'top'; 
       context.fillText (text, textXpos, 440);  
       } 
       </script> 
      </head> 
      <body> 
      <div id="page"> 
     <video id="video" autoplay loop> 
      <source id='mp4' 
      src="http://media.w3.org/2010/05/sintel/trailer.mp4" 
      type='video/mp4'> 
      <source id='webm' 
      src="http://media.w3.org/2010/05/sintel/trailer.webm" 
      type='video/webm'> 
      <source id='ogv' 
      src="http://media.w3.org/2010/05/sintel/trailer.ogv" 
      type='video/ogg'> 
      <p>Your user agent does not support the HTML5 Video element.</p> 
     </video> 
       <canvas id="cvs" width="500" height="500"> 
        Your browser does not support the HTML 5 Canvas. 
       </canvas> 
      </div> 
      </body> 
     </html> 
+3

你可以请小提琴吗? – nycynik 2013-03-19 14:43:13

+0

http://jsfiddle.net/jBHCN/14/ – user2186669 2013-03-19 14:52:12

+0

是的,改变间隔和movrment,你会得到相同的结果,除了它不那么波涛汹涌。 – nycynik 2013-03-19 16:55:33

回答

3

通过减少间隔时间为您的动画功能。你目前已经设定每360ms调用一次,每秒不到3帧。将它设置在20到40之间以获得流畅的动画。

+0

我想要那个速度。是否没有办法创建某种形式的补间动画 – user2186669 2013-03-19 14:53:14

+2

3fps动画可能会非常参差不齐,或者只能发生非常小的动作。要保持相同的移动速度,但要保持平滑,则需要缩短间隔并减少文本移动的数量。例如。如果您将时间间隔更改为30,那么您还希望文本仅移动0.8帧。 – 2013-03-19 14:57:05

+0

@ user2186669:我不认为你很懂帆布。画布只会在绘制时改变。如果你每360ms只画一次,它就不会在它之间变化。 – 2013-03-19 14:57:41