javascript - Javascript Easing 无法正常工作 - EaseInCirc?
问题描述
在 Photoshop 脚本中使用 Javascript,我希望将 X 层的不透明度从不透明度 0 更改为不透明度 100,但我相信以逐渐/缓慢到最后加速的方式,例如“EaseInCirc”。
我正在使用的代码(不成功)是:https ://jsfiddle.net/09onhmy7/
numberOfLayers = 20;
myOpacity = 0;
x=0;
for(i = 0 ; i < numberOfLayers ; i++){
myIncrements = EaseExpo(i, 1, x, numberOfLayers);
x = myIncrements + myIncrements;
myOpacity = myOpacity + parseInt(myIncrements,10);
if (myOpacity > 100) {myOpacity = 100 ;}
document.write(myOpacity+",");
}
我在网上找到了 EaseExpo(EaseInCirc) 代码(http://gizma.com/easing/):
// t = current time
// b = start value
// c = change in value
// d = duration
// (t and d) can be frames
function EaseExpo(t, b, c, d) {
//EaseInCirc
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
}
…但到目前为止,代码返回的值不会按预期从 0 到 100 分布——而且很可能永远不会,因为我不知道如何转置它们以适应 0 到 100 的范围。
基本上,我试图创建一个从 0 - X 的值的迭代(不是线性的)来表示缓慢上升到最大速度的变化率(我很确定它是一个平方根图/函数?)我正在尝试复制。
将输入的值总是从 0 开始,但最大值可以是任何值。 诀窍是,我需要能够始终将最终值转换为 0-100 的结果。
e.g. A) 40 values = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,32,34,36,39,42,46,51,58,68,83,100
e.g. B) 18 values = 1,3,5,7,9,11,13,15,17,20,23,27,32,39,49,64,88,100
我一生都无法弄清楚如何去做——或者我应该使用不同的数学来实现我想要的吗?非常感谢,李维
解决方案
推荐阅读
- assembly - 我正在尝试在 BCD 中添加两个数字。如何使用进位逐位添加两个十六进制值?
- tinymce - tinyMCE base64 Image and storing to mySQL database
- typescript - Testing Connection to Firebase Real-Time Database, Hitting a ref to Confirm Connection
- unity3d - Unity - following finger only works for one direction
- python - TypeError:在方法“...”中,使用 swig 模块时类型为“unsigned char const *”的参数 1
- android - html progress bar not working in android browsers
- android - fitsSystemWindows is not working with support libraries 27.1.1
- java - Java | Posing Boolean expressions on hashMap entries
- java - Using iterator object to loop throuh arraylist and check if it is higher than a value
- c# - How to use Microsoft.Build in .NET Core project?