Aegisub特效随记:Autotags
本文最后更新于 117 天前。

关于lua中的and语句,请参考Aegisub特效随机:Lua中的And和Or

AutoTags 原始函数代码

function AutoTags(Intervalo,Dato1,Dato2) --Intervalo为时间间隔,Dato1/2为变化的内容
    local RESULTADO=""  --初始化 RESULTADO为输出结果
    local SUERTE = 0 --初始化局部输出存储器
    local CONTADOR = 0 --初始化计数器
    local ARREGLO = 0 --初始化表,用于存储前后变换的两个标签
    local count = math.ceil(line.duration/Intervalo) --总的变换次数
    ARREGLO = {Dato1,Dato2} --把两个变换的状态写入ARREGLO表,方便奇偶调用
    for i = 1, count do --核心循环
        CONTADOR = i --重复计数器数值
        if Dato1 and Dato2 then --拒绝Data1和Data2为空时的无效变换?

            if  CONTADOR%2 ==0 then --从默认变成Data1,再变成Data2
                SUERTE = ARREGLO[1] --将标签写入临时的输出
            else
                SUERTE = ARREGLO[2]
            end

        end
        RESULTADO = RESULTADO .."\\t(" ..(i-1)*Intervalo.. "," ..i*Intervalo.. ",\\" ..SUERTE..")".."" --从0开始输出并叠加变换
    end
    return RESULTADO --返回最终结果
end

AutoTags 无换行代码

可以直接复制进Aegisub

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

函数使用说明

Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code once,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
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,template line,{!AutoTags(100,'fs50','fs20')!}
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,test

如上,在使用函数时,传入值的Dato1和Dato2应当为字符串,固用' '框起来。
函数返回值无{},固应当在template行中写类似{AutoTags(Timeinterval,'fs50','fs20'}

因为是写在代码当中,所以如果要有多个变化同时发生,需要用\来写后续的特效标签。例如{AutoTags(Timeinterval,'fs50\\frz90','fs20\\frz0'}
[1]

变种[2]

AutoTags1 (with pause):停顿

可以让每个变换之间有时间间隔/停顿。

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

image.png

AutoTags2 (with Delay):延迟

可以让变换有不同的开始时间。可以配合$si等使用。

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

image.png

AutoTags3 (Different Intervals):不同的时间间隔过渡

AutoTags3(第一次变化用时,最终变化用时,”标签1″,”标签2″)
即,每个\t变换的时间,会从Interval1逐渐过渡到Interval2

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

image.png

参考

  1. ^https://bilibili.com/BV1c441197e9
  2. ^http://www.tcax.org/forum.php?mod=viewthread&tid=1230
标题:Aegisub特效随记:Autotags
作者:IKK
除转载和特殊声明外,所有文章采用 CC BY-NC-SA 4.0协议
上一篇
下一篇