Soy nuevo en el uso de expresiones en After Effects y apenas he tocado Java antes. Sin embargo, usando algunos tutoriales en línea y sentido común, ayer logré crear un gráfico de título de tercios inferiores, el java se usa para cambiar su posición según la cantidad de texto escrito dentro. El gráfico del título se desangra hacia la izquierda de la pantalla, de modo que cuando se escribe texto en él, se mueve hacia la izquierda o hacia la derecha para coincidir con la longitud del texto. He incluido el código a continuación.
s =thisComp.layer("Header title");
x = s.sourceRectAtTime(time-s.inPoint,true).width;
subl =thisComp.layer("Sub title");
subt = subl.sourceRectAtTime(time-subl.inPoint,true).width;
text = Math.max(subt, x) -100;
max = 659.4;
m = Math.min(max, text);
[m, 871]
Donde estoy luchando es que quiero convertir esto en un gráfico de movimiento animado, donde el gráfico simplemente se desliza hacia adentro y hacia afuera en el momento adecuado. Sin embargo, si hay menos texto, su posición está más alejada del cuadro y lleva más tiempo deslizarse, lo que significa que no está sincronizado con otras partes de la animación. No me preocupa la velocidad constante, solo quiero que aparezca al mismo tiempo que tiene que coincidir con otras animaciones. ¡La única forma en que puedo ver que esto suceda con precisión es codificando más, donde se me escapa un poco!
Intenté animar usando if
expresiones dependientes de la time
función, pero esto no creó una transición, el gráfico saltó instantáneamente de un punto a otro. Tampoco puedo encontrar nada sobre la creación de fotogramas clave en Java, así que no estoy seguro de cuál es la mejor manera de hacerlo.
Realmente aprecio cualquier ayuda para ponerme en el camino correcto.
Hay algunas funciones integradas solo para este propósito. Los encontrará en la carpeta de interpolación en el menú desplegable de expresiones. La más simple es la linear()
función:
linear(t, value1, value2)
Esta función interpola de forma lineal entre valor1 y valor2 en función del valor de t, donde 0 ≤ t ≤ 1
. Entonces, si t=0
la función regresa value1
y si t=1
regresa value2
. También puede tomar cinco parámetros, en la forma
linear(t, tMin, tMax, value1, value2)
de esta forma, en lugar de usar el rango 0-1 t
, usa el rango tMin
hasta tMax
.
Junto con linear()
también hay ease()
, easeIn()
y easeOut()
. Estos se interpolan con aceleración, lo que significa que la animación se ralentiza al principio o al final, o en ambos.
Entonces, en su ejemplo, podría agregar esto antes de la última línea:
startTime = inPoint; //if you want the animation to start at the start of the layer
m = ease(time-startTime, 0, animationLength, 0, m)
esto animará suavemente desde el punto de entrada de la capa durante animationLength
segundos hasta la posición calculada.
Oh, por cierto , es Java script, no Java. Son idiomas completamente diferentes. Como dicen, Java y Javascript son similares de la misma manera que "coche" y "alfombra" son similares.
5Draptor
puntapié