콘솔에서 다음을 실행하고 이것이 원하는 효과인지 확인하십시오.
var counter = 0;
var factor = 1;
var damping = 80; // Increase this to slow down increment.
// This is the minimum value of 'factor'. Increasing this will speed up the function
var minVal = 0.1;
var timer = setInterval(function() {
console.log(Math.ceil(counter)); // Call your function here.
counter = counter + factor;
if (counter > 40 && counter < 100) {
factor = Math.max((100 - counter)/damping, minVal)
} else if (counter > 100) {
clearInterval(timer);
}
}, 20);
처음 counter
은 factor = 1
씩 증가하고있다. 40
이후에는 factor
이 점차 줄어 듭니다. factor
의 최소값은 minVal
보다 작을 수 없습니다. 더 불규칙와 진행 상황을 표시
은 -
var counter = 0;
var factor = 1;
var timer = setInterval(function() {
console.log(Math.ceil(counter)); // Call your function here.
counter = counter + factor;
if (counter > 40 && counter < 100) {
factor = Math.max(Math.abs(Math.sin(100 - counter)), 0.1)
} else if (counter > 100) {
clearInterval(timer);
}
}, 20);
Math.sin
기능을 항상 +1
에 -1
사이의 숫자를 반환합니다. 우리는 오직 양수가 필요하므로 Math.abs
을 통해 전달합니다. 따라서 factor
은 항상 0
과 1
사이입니다.
또한 숫자가 너무 작아서 요인 값이 중요하지 않을 수 있습니다. 이 문제가 발생하지 않도록하려면 0.1
으로 최소값을 설정하고 Math.max
으로 확인하십시오.
불규칙성 진행 표시 감소와 속도 -
var counter = 0;
var factor = 1;
var maxVal = 1; // Maximum value of `factor` after crossing 40
var minVal = 0.1; // Minimum value of `maxVal`
var damping = 60; // damping for `maxVal`
var timer = setInterval(function() {
console.log(Math.ceil(counter)); // Call your function here.
counter = counter + factor;
if (counter > 40 && counter < 100) {
maxVal = Math.max((100 - counter)/damping, minVal)
factor = Math.min(Math.max(Math.abs(Math.sin(100 - counter)), 0.1), maxVal);
} else if (counter > 100) {
clearInterval(timer);
}
}, 20);
이 하나의 결합 된 상기의 양이다. 두 번째 경우 factor
은 0
과 1
사이의 값일 수 있습니다. 위의 기능은 factor
가 0
및 maxVal
사이에 있는지 확인합니다 우리가 1
추가에 사용되는 감쇠 기능을 사용
0.1
-1
에서maxVal
감소 유지의가에 대응하기 위해'0.2'을 가정 해 봅시다? – Peter