Javascript Easing не работает правильно - EaseInCirc? - PullRequest
0 голосов
/ 24 октября 2018

используя Javascript в Photoshop Scripting, я хочу изменить непрозрачность слоев 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

Я не могу на всю жизнь понять, как это сделать - или я должен использовать другую математику, чтобы достичь того, чего я хочу?Большое спасибо заранее, Ливий

...