动画与帧率(动画帧率怎么还原)

动画与帧率先看视频,同样的代码,左侧是240刷显示器,右侧是60刷显示器,但是动画中粒子的运动速度不同。
原因是机器的帧率导致了基于帧的动画显示效果不同。
动画的移动距离是相同的&

首先,同样的代码左边有240个画笔监视器,右边有60个画笔监视器,但是动画中粒子的移动速度是不同的。

原因是基于帧的动画显示效果根据机器的帧速率而变化。

动画移动相同的距离,但在240 画笔显示器上每秒移动240 次,在60 画笔显示器上每秒移动60 次。这使得动画在高刷新显示器上移动得更快。

解决办法是更换基于时间的JS动画库。

下面是再现meethigher/animation-and-frames: 动画和帧的示例。

框架动画.html

!DOCTYPE html

html lang=\’en\’

元字符集=\’UTF-8\’

元名称=\’视口\’内容=\’宽度=设备宽度,初始比例=1.0\’

标题框动画/标题

风格

* {

边距: 0;

填充: 0;

}

#粒子-js {

绝对位置:

宽度: 100%;

高度: 100%;

背景颜色: #000;

}

#粒子-js画布{

位置:是固定的。

顶部: 0;

右: 0;

底部: 0;

左: 0;

}

/风格

/头

身体

div id=\’粒子-js\’/div

脚本src=\’https://cdn.jsdelivr.net/articles.js/2.0.0/articles.min.js\’/script

脚本

让lastTime=Performance.now();

粒子JS(‘粒子-js’,{

\’粒子\’: {

\’号码\’: {

\’值\’ : 180,

\’密度\’: {

“启用”: 为真,

‘价值区域’: 800

}

},

\’颜色\’: {

\’值\’: \’#ffffff\’

},

\’形状\’: {

\’输入\’: \’日元\’,

\’中风\’: {

‘宽度’: 0,

\’颜色\’: \’#000000\’

},

\’多边形\’: {

\’nb_sides\’: 5

},

\’图像\’: {

\’src\’: \’img/github.svg\’,

\’宽度\’ : 100,

‘高度’: 100

}

},

\’不透明度\’: {

“价值”: 0.5,

‘随机’:假,

\’动画\’: {

‘启用’:假,

‘速度’: 1,

\’不透明度_最小值\’: 0.1,

“同步”: 假

}

},

\’尺寸\’: {

“价值”: 2,

“随机”: 正确,

\’动画\’: {

‘启用’:假,

‘速度’: 40,

\’尺寸最小值\’: 0.1,

“同步”: 假

}

},

\’line_linked\’: {

‘启用’:假,

“距离”: 150,

\’颜色\’: \’#ffffff\’,

“不透明度”: 0.4,

\’宽度\’: 1

},

\’移动\’: {

“启用”: 为真,

‘速度’: 2,

\’方向\’: \’右下\’,

‘随机’:假,

‘直’:假,

\’out_mode\’: \’输出\’,

\’景点\’: {

‘启用’:假,

\’旋转X\’: 600,

‘旋转Y’: 1200

}

}

},

\’互动\’: {

\’detect_on\’: \’画布\’,

\’事件\’: {

\’悬停\’: {

‘启用’:假,

\’模式\’: \’排斥\’

},

\’onclick\’: {

“启用”: 为真,

\’模式\’ : \’推\’

},

“调整大小”: true

},

\’模式\’: {

\’抢\’: {

‘距离’: 400,

\’line_linked\’: {

“不透明度”: 1

}

},

\’泡沫\’: {

‘距离’: 400,

‘尺寸’: 40,

\’期间\’: 2,

“不透明度”: 8,

‘速度’: 3

},

\’排斥\’: {

《距离》: 200

},

\’推\’: {

\’粒子_nb\’: 4

},

\’删除\’: {

\’粒子_nb\’: 2

}

}

},

\’retina_detect\’: 正确,

\’config_demo\’: {

\’隐藏卡\’: 假,

\’背景颜色\’: \’#b61924\’,

\’背景图片\’:\’\’,

\’后台位置\’: \’50% 50%\’,

\’background_repeat\’: \’不重复\’,

\’background_size\’: \’封面\’

},

//strong制基于帧的动画是基于时间的,但测试表明它是资源密集型的,运行一段时间后会冻结计算机。改变计划是不合适的。

//\’回调\’: {

//onParticlesUpdate: 函数() {

//const currentTime=Performance.now();

//const deltaTime=(当前时间- 最后时间)/1000 //时间(秒)

//最后时间=当前时间;

//

//const SpeedFactor=deltaTime * 60 //标准化为60 FPS。

//pJSDom[0].pJS.articles.move.speed=6 *speedFactor;

//}

//}

});

//重写绘图函数以包含自定义更新逻辑

constoriginalDraw=pJSDom[0].pJS.fn.articlesDraw;

pJSDom[0].pJS.fn.articlesDraw=函数() {

if (pJSDom[0].pJS.callback pJSDom[0].pJS.callback.onParticlesUpdate) {

pJSDom[0].pJS.callback.onParticlesUpdate();

}

原始Draw.call(pJSDom[0].pJS);

};

/剧本

/身体

/html

时间动画.html

!DOCTYPE html

html lang=\’en\’

元字符集=\’UTF-8\’

元名称=\’视口\’内容=\’宽度=设备宽度,初始比例=1.0\’

标题时间动画/标题

风格

* {

边距: 0;

填充: 0;

}

#t粒子{

绝对位置:

宽度: 100%;

高度: 100%;

背景颜色: #000;

}

/风格

/头

身体

div id=\’tsarticles\’/div

!–tsarticles库介绍–

脚本src=\’https://cdn.jsdelivr.net/npm/tsarticles@2/tsarticles.bundle.min.js\’/script

脚本

//初始化tsarticle

tsParticles.load(\’tsarticles\’, {

\’fpsLimit\’: 60, //限制帧速率为60 FPS

\’粒子\’: {

\’号码\’: {

“价值”: 180,

\’密度\’: {

“启用”: 为真,

‘价值区域’: 800

}

},

\’颜色\’: {

\’值\’: \’#ffffff\’

},

\’形状\’: {

\’输入\’: \’日元\’,

\’中风\’: {

‘宽度’: 0,

\’颜色\’: \’#000000\’

},

\’多边形\’: {

\’nb_sides\’: 5

},

\’图像\’: {

\’src\’: \’img/github.svg\’,

\’宽度\’ : 100,

‘高度’: 100

}

},

\’不透明度\’: {

“价值”: 0.5,

‘随机’:假,

\’动画\’: {

‘启用’:假,

‘速度’: 1,

\’不透明度_最小值\’: 0.1,

“同步”: 假

}

},

\’尺寸\’: {

“价值”: 2,

“随机”: 正确,

\’动画\’: {

‘启用’:假,

‘速度’: 40,

\’尺寸最小值\’: 0.1,

“同步”: 假

}

},

\’line_linked\’: {

‘启用’:假,

“距离”: 150,

\’颜色\’: \’#ffffff\’,

“不透明度”: 0.4,

\’宽度\’: 1

},

\’移动\’: {

“启用”: 为真,

‘速度’: 2,

\’方向\’: \’右下\’,

‘随机’:假,

‘直’:假,

\’out_mode\’: \’输出\’,

\’景点\’: {

‘启用’:假,

\’旋转X\’: 600,

‘旋转Y’: 1200

}

}

},

\’互动\’: {

\’detect_on\’: \’画布\’,

\’事件\’: {

\’悬停\’: {

“启用”: 假,

\’模式\’: \’排斥\’

},

\’onclick\’: {

“启用”: 为真,

\’模式\’ : \’推\’

},

\’调整大小\’: true

},

\’模式\’: {

\’抢\’: {

‘距离’: 400,

\’line_linked\’: {

“不透明度”: 1

}

},

\’泡沫\’: {

‘距离’: 400,

‘尺寸’: 40,

\’期间\’: 2,

“不透明度”: 8,

‘速度’: 3

},

\’排斥\’: {

《距离》: 200

},

\’推\’: {

\’粒子_nb\’: 4

},

\’删除\’: {

\’粒子_nb\’: 2

}

}

},

\’retina_detect\’: 正确,

\’config_demo\’: {

\’隐藏卡\’: 假,

\’背景颜色\’: \’#b61924\’,

\’背景图片\’:\’\’,

\’后台位置\’: \’50% 50%\’,

\’background_repeat\’: \’不重复\’,

\’background_size\’: \’封面\’

}

});

/剧本

/身体

/html

以上关于#animation和帧率的相关内容摘自网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91635.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月22日 下午9:43
下一篇 2024年6月22日 下午10:37

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注