Introducción a la función personalizada AutoTags y sus variantes comúnmente utilizadas
La función AutoTags se utiliza para iterar entre dos (grupos de) tags de efectos dentro de un período de tiempo continuo, como cambiar el valor de blur
hacia adelante y hacia atrás, creando un efecto de parpadeo. Es muy común en muchos scripts. Para usar esta función, primero debes declararla en la línea de código.
function AutoTags(Intervalo,Dato1,Dato2) local RESULTADO="" local SUERTE = 0 local CONTADOR = 0 local ARREGLO = 0 local count = math.ceil(line.duration/Intervalo) ARREGLO = {Dato1,Dato2} for i = 1, count do CONTADOR = i if Dato1 and Dato2 then if CONTADOR%2 ==0 then SUERTE = ARREGLO[1] else SUERTE = ARREGLO[2] end end RESULTADO = RESULTADO .."\\t(" ..(i-1)*Intervalo.. "," ..i*Intervalo.. ",\\" ..SUERTE..")".."" end return RESULTADO end
Luego, se llama en el template.
El uso original de la función AutoTags sería:
AutoTags(duración del cambio, "tag1", "tag2")
La efecto generado se vería así:
Se puede observar que durante toda la duración de la palabra, se produce un cambio de ida y vuelta de blur2
a blur0
y de blur0
a blur2
.
Si deseas utilizar un cambio de ida y vuelta entre dos conjuntos de etiquetas, ten en cuenta que debes utilizar un \
adicional, como en AutoTags(500, "blur2\\fs50", "blur0\\fs30")
.
La introducción de la función AutoTags en su forma original termina aquí.
A continuación, se presentan distintas variantes de AutoTags generadas por diferentes necesidades.
Variante 1
function AutoTags1(Intervalo,Dato1,Dato2,Pause) local RESULTADO="" local SUERTE = 0 local CONTADOR = 0 local ARREGLO = 0 local count = math.ceil(line.duration/(Intervalo+Pause)) ARREGLO = {Dato1,Dato2} for i = 1, count do CONTADOR = i if Dato1 and Dato2 then if CONTADOR%2 ==0 then SUERTE = ARREGLO[1] else SUERTE = ARREGLO[2] end end RESULTADO = RESULTADO .."\\t(" ..(i-1)*(Intervalo+Pause).. "," ..i*Intervalo+Pause*(i-1).. ",\\" ..SUERTE..")".."" end return RESULTADO end
Se utiliza para lograr un efecto de cambio de ida y vuelta con tiempo de pausa adicional. El cuarto parámetro adicional, "Pause", representa el tiempo de pausa en milisegundos (ms).
AutoTags1(duración del cambio, "tag1", "tag2", tiempo de pausa)
Variante 2
function AutoTags2(Intervalo,Dato1,Dato2,Delay) local RESULTADO="" local SUERTE = 0 local CONTADOR = 0 local ARREGLO = Layer local count = math.ceil(line.duration/Intervalo) ARREGLO = {Dato1,Dato2} for i = 1, count do CONTADOR = i if Dato1 and Dato2 then if CONTADOR%2 ==0 then SUERTE = ARREGLO[1] else SUERTE = ARREGLO[2] end end RESULTADO = RESULTADO .."\\t(" ..(i-1)*Intervalo+Delay.. "," ..i*Intervalo+Delay.. ",\\" ..SUERTE.. ")".."" end return RESULTADO end
Se utiliza para lograr un efecto de cambio de ida y vuelta con retraso (en relación al tiempo de inicio de la línea).
Por ejemplo, se necesita que el efecto de cambio ocurra 1 segundo después del inicio de la línea:
AutoTags2(500, "tag1", "tag2", 1000)
Variante3
function AutoTags3(Intervalo1,Intervalo2,Dato1,Dato2) local RESULTADO="" local SUERTE = 0 local CONTADOR = 0 local ARREGLO = 0 local count = 2*math.ceil(line.duration/(Intervalo1+Intervalo2)) local d=math.ceil((Intervalo2-Intervalo1)/count) local t={} ARREGLO = {Dato1,Dato2} for i = 1, count do CONTADOR = i t[1]=0 t[i+1]=t[i]+Intervalo1+(i-1)*d if Dato1 and Dato2 then if CONTADOR%2 ==0 then SUERTE = ARREGLO[1] else SUERTE = ARREGLO[2] end end RESULTADO = RESULTADO .."\\t(" ..t[i].. "," ..t[i+1].. ",\\" ..SUERTE..")".."" end return RESULTADO end
AutoTags en forma de una progresión aritmética (con el tiempo de cambio aumentando o disminuyendo).
El efecto de decremento es similar a un temporizador de bomba, volviéndose cada vez más rápido. Mientras que el efecto de incremento indica que la velocidad de cambio se vuelve cada vez más lenta.
AutoTags3(tiempo inicial del cambio, tiempo final del cambio, "tag1", "tag2")
Si tiempo inicial del cambio
> tiempo final del cambio
, es un efecto de decremento. Si tiempo final del cambio
> tiempo inicial del cambio
, es un efecto de incremento.
El archivo ASS está adjunto: AutoTags.zip
Por el momento, solo puedo pensar en estas pocas variantes: progresión geométrica, alternancia entre dos conjuntos de tiempos también es una buena idea. ¡Bienvenidos todos a contribuir!