javascript-js动画如何工作?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-js动画如何工作?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1616字,纯文字阅读大概需要3分钟。
内容图文
我试图了解如何使javascript动画平稳运行,并且我一直在这里阅读一些答案,但发现一些我不了解的内容.
这是问题Smooth javascript animation的链接
在获得最多投票的答案中,它说:“这就是为什么通常最好将位置/帧基于自动画开始以来经过的时间量(使用new Date().getTime())而不是移动/每帧更改固定的数量.”
谁能给我展示一个非常简单的示例,该示例使用此答案中的方法,并说明如何控制动画的速度?
解决方法:
基本思想如下:
>您要在1秒内将DIV从0,0移至100,0.
>您希望它每秒有50帧(使用setTimeout(fun,20))
>但是,由于不能保证回调运行在正好20毫秒内,因此您需要弄清楚回调实际运行的时间.例如,假设您的动画在时间X开始,但是直到X 5ms才调用您的第一个动画回调.您需要计算div在动画25ms处的位置,动画回调不能假设50个偶数步.
这是一个非常简单的代码示例.我通常不使用全局变量进行编码,但这是显示该技术的最简单方法.
var duration = 1000; // in ms
var startTime; // in ms
var startX = 0;
var endX = 500;
// 0 means try to get as many frames as possible
// > 1: Remember that this is not guaranteed to run as often as requested
var refreshInterval = 0;
var div = document.getElementById('anim');
function updatePosition() {
var now = (new Date()).getTime();
var msSinceStart = now - startTime;
var percentageOfProgress = msSinceStart / duration;
var newX = (endX - startX) * percentageOfProgress;
div.style.left = Math.min(newX, endX) + "px";
if (window.console) {
console.log('Animation Frame - percentageOfProgress: ' + percentageOfProgress + ' newX = ' + newX);
}
if (newX < endX) {
scheduleRepaint();
}
}
function scheduleRepaint() {
setTimeout(updatePosition, refreshInterval);
}
div.onclick = function() {
startTime = (new Date()).getTime();
scheduleRepaint();
}
内容总结
以上是互联网集市为您收集整理的javascript-js动画如何工作?全部内容,希望文章能够帮你解决javascript-js动画如何工作?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。