javascript - 正弦波动画性能建议
问题描述
我正在尝试使用 javascript 创建一个正弦波动画,并且已经成功获得了我想要的外观,但是由于生成的矢量数量,我似乎遇到了性能问题。
我目前正在使用 p5js 库。这是我到目前为止生成的示例,是否有任何选项可以优化它以提高性能,同时保持细节/平滑度?
function setup () {
let size = min(windowWidth, windowHeight) * 0.96;
size = floor(size);
createCanvas(windowWidth, windowHeight);
noiseSeed(random(50));
frameRate(25);
noFill();
}
function windowResized () {
let size = min(windowWidth, windowHeight);
size = floor(size);
resizeCanvas(windowWidth, windowHeight);
noiseSeed(random(50));
frameRate(25);
draw();
}
function draw () {
clear();
beginShape();
const _o = millis() * 0.0005;
const amount = 20;
const ampl = ( 630 / ( windowHeight ) * 100 ) + 120;
for(var k=0;k<amount;k++) {
beginShape();
const offset = (1 - k / amount) * 3;
const detail = 10;
for(var i=0;i<(width+detail);i+=detail) {
let y = height * 0.5;
y += Math.sin(i * 0.01 - _o + ( k / 50 ) + offset) * ampl;
y += Math.sin(i * 0.005 - _o + 5 + offset + noise( 50 ) ) * ampl;
console.log(i,y);
vertex(i, y);
}
stroke(255, 255, 255, (k/(amount - 1) * 100));
frameRate(25);
endShape();
}
}
Codepen 示例: https ://codepen.io/craiell/pen/zYGbLKm
我目前正在使用 P5js 库,但如果还有其他库/方法,我愿意接受替代方案。任何指针将不胜感激。
解决方案
console.log
从嵌套循环中删除该行。这使我的笔记本电脑上的动画流畅,即使我将帧速率提高到 60。
我对 P5js 不熟悉,但额外的调用frameRate()
似乎是不必要的。
推荐阅读
- android - 在 Android 10 及更低版本上仅使用设备凭据选项显示身份验证提示
- javascript - 在日历JS中搜索日期
- angular - 打字稿:输入显示两个值(一个不会考虑)
- c++ - 为什么删除重载时需要使用声明
- azure-devops - Azure DevOps 审核日志 Group.CreateGroups 为未经许可的用户以 [TEAM FOUNDATION] 为前缀的组
- javascript - 即使单击提交按钮后也不会调用 onSubmit 函数
- python-3.x - 使用 python 的 jira 服务台 api 上的 401 错误
- javascript - 功能组件反应中文档上的 removeEventListener 不起作用
- mysql - 在数据库设计中使用类型列或单独的类型表?
- c - 如何正确传递输入并从 Mex 函数获取输出?