如何放慢动画
How to slow down the animation?
我有一个动画矩形jsFiddle Demo
如何使动画慢下来,使它更稳定?
我尝试使用循环延迟,但延迟循环和requestAnimationFrame之间存在冲突
我不想改变参数window.setTimeout(f, 1e3 / 60);
因为有更多的代码块需要良好的首选项。
许多谢谢。loop delay:
for (i = 0; i < 10; i++) {
(function (i) {
window.setTimeout(function () {}, i * 2000);
}(i));
}
我的代码:
var canvas = document.getElementById('c');
var ctx = canvas.getContext('2d');
var my_gradient = ctx.createLinearGradient(0, 0, 0, 300);
window.requestAnimationFrame = function() {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.msRequestAnimationFrame ||
window.oRequestAnimationFrame ||
function(f) {
window.setTimeout(f,1e3/60);
}
}();
window.cancelAnimationFrame = function() {
return window.cancelAnimationFrame ||
window.webkitCancelAnimationFrame ||
window.mozCancelAnimationFrame ||
window.msCancelAnimationFrame ||
window.oCancelAnimationFrame ||
function(f) {
window.setTimeout(f,1e3/60);
}
}();
var randompos = {};
RandomPosition();
function DrawBackround() {
ctx.globalAlpha = 1;
ctx.clearRect(0, 0, 200, 200);
my_gradient.addColorStop(0, '#002EB8');
my_gradient.addColorStop(1, '#4D6DCD');
ctx.fillStyle = my_gradient;
ctx.fillRect(0, 0, 200, 200);
}
function get_random_color() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
function RandomPosition() {
DrawBackround();
ctx.globalAlpha = 0.5;
var dt = 10;
for (i = 0; i < 3; i++) {
n = Math.floor(Math.random() * 8) + 1;
switch (n) {
case 1:
randompos.x = 0;
randompos.y = dt; //12
break;
case 2:
randompos.x = dt;
randompos.y = dt; //1
break;
case 3:
randompos.x = dt;
randompos.y = 0; //3
break;
case 4:
randompos.x = dt;
randompos.y = -dt; //4
break;
case 5:
randompos.x = 0;
randompos.y = -dt; //6
break;
case 6:
randompos.x = -dt;
randompos.y = -dt;
break;
case 7:
randompos.x = -dt;
randompos.y = 0;
break;
case 8:
randompos.x = -dt;
randompos.y = dt;
break;
default:
}
ctx.fillStyle = get_random_color();
ctx.fillRect(randompos.x + 50, randompos.y + 50, 100, 100);
}
window.requestAnimationFrame(RandomPosition);
for (i = 0; i < 10; i++) {
(function (i) {
window.setTimeout(function () {}, i * 2000);
}(i));
}
}
减慢特定函数的一个选项是使它每X帧运行一次,
将你的RandomPosition()编辑成这样,它会每10帧运行一次:
var counter=0;
function RandomPosition() {
if(++counter % 10){
window.requestAnimationFrame(RandomPosition);
return false;
}
http://jsfiddle.net/jaibuu/kHvaX/1/use this:
setInterval(code, milliseconds);
返回一个需要保存的数字,以便停止代码。所以我们可以写:
var interval = setInterval(function() {
clock();
x++;
if (x > 90) clearInterval(interval);
}, 30);
创建一个每30毫秒发生一次的函数。
每隔30毫秒,调用clock(), x递增,如果x大于90,我们调用clearInterval并传递调用setInterval返回的数字。这确保代码总共打开90次。
相关文章:
- 如何设置html元素填充的动画
- 如何使用动画实现纸张推车
- 如何在生成下载文件时显示加载动画
- 剑道网格jQuery动画()问题
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- jQuery Lazy加载动画滚动
- jquery动画可以通过编程链接吗
- Javascript将数学动画化
- 动画.CSS重播
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- 如何使用jQuery在动画中期加速动画
- 使用数据上的角度更改设置集合的第一个元素的动画
- 如何使用css动画/javascript使具有背景图像的元素出现
- 如何使用css动画从中心增加边界线
- JQuery动画延长容器不起作用
- 如何使动画线性传递?在开始和结束时不会放慢速度
- 如何通过jQuery放慢滚动到顶部事件动画
- 调整EaselJS动画的大小,同时'It’It’s播放时不会放慢浏览器的速度
- 我可以放慢opensedragon的平移/缩放动画吗?
- 如何放慢动画