javascript - 如何使 Canvas 上的文本移动动画更平滑(减少锯齿状运动)?

标签 javascript html animation canvas

如何使 Canvas 上的文本移动动画更加平滑(减少锯齿状运动)?

页面的运行完全符合我的要求,只是文本的运动非常锯齿状。怎样才能让它在这个速度下运行得更流畅?

代码:

<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>

最佳答案

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

关于javascript - 如何使 Canvas 上的文本移动动画更平滑(减少锯齿状运动)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502530/

相关文章:

java - 使用 Extjs 将表单数据传递到 servlet

javascript - jquery 获取 XHR 错误数据

html - 将鼠标悬停在缩略图上并覆盖透明放大镜图像

php - 通过 Apache 在所有页面中插入 HTML 代码?

android - 使用 Android 中的动画将 ImageView 移动到不同的位置

graphics - 树可视化和动画

javascript - 使用按钮在 Javascript 上隐藏和显示字段集在第一次单击时不起作用/如何在单击时更改按钮标题

javascript - Bookshelf.js/Knex.js 太 "helpful"与 UTC DATETIME 列

javascript - 如何使我的复选框过滤器发挥作用?

swift - `Animation` 案例 (SwiftUI) 的长度是多少?