| 本帖最后由 Seekladoom 于 2021-7-12 15:10 编辑 
 参考链接:
 习惯1:def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):的来源:
 tcaxPy 脚本模板详解 (英文)
 
 习惯2:def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _x, _y, _a, _txt):写法的三位坛友:
 [完整特效] [kk]05_Sword_Art_Online_OP1
 [完整特效] [jiji]002_Uchouten_Kazoku_OP
 [完整特效][youkaze]008_Accel·world_OP1
 
 _BT, _ET, _SK, _KT的写法来源(tcaxPy 脚本模板详解 (英文)),具体相关代码在这里:
 复制代码def tcaxPy_Init():
    start        = GetVal(val_BegTime)   #_BT即_BegTime的缩写,这里的Beg全写是Begin,跟start一样是开始的意思
    end          = GetVal(val_EndTime)  #_ET即_EndTime的缩写
    kar          = GetVal(val_KarTime)    #_KT即_KarTime的缩写
    elapKar      = GetVal(val_KarTimeDiff)   #_SK可能是Start2Kar的缩写(类似Aegisub的start2syl),这里的elapKar的实际作用即从当前行的第一个文本到当前文本经过的时间
 【习惯1:根据TCAX手册原生命名写的转场】
 
 复制代码def tcaxPy_Main(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt):
    ASS_BUF  = []        # used for saving ASS FX lines
    TCAS_BUF = []        # used for saving TCAS FX raw data
    duration = 10 * _FD                                                               
    ts = _start + _j * 3 - 20
    te = _start + _elapk
   
    ts2 = _start + _elapk
    te2 = _start + _elapk + _k
   
    ts3 = _start + _elapk + _k
    te3 = _end - (_n - _j - 1) * 3 + 20
【习惯2:根据三位坛友分享的完整特效中的代码写的转场】
 
 复制代码def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _x, _y, _a, _txt):
    ASS_BUF  = []        # used for saving ASS FX lines
    TCAS_BUF = []        # used for saving TCAS FX raw data
    duration = 10 * _FD                                                               
    ts = _BT + _j * 3 - 20
    te = _BT + _SK
   
    ts2 = _BT + _SK
    te2 = _BT + _SK + _KT
   
    ts3 = _BT + _SK + _KT
    te3 = _ET - (_n - _j - 1) * 3 + 20
个人建议初学者先按照手册也就是习惯1的代码去学习,如果代码功底较强,知道自己写的东西是啥的话,推荐习惯2。 
 
 另外论坛内实际上真正的完整特效写法比上述代码示例更短,是直接写进SubL函数里面去的,其中控制文字出现时间的代码是这样的: 复制代码def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):
    ASS_BUF = []                # 用于保存ASS特效
            ########文字效果########
    ass_main(ASS_BUF,SubL(_BT-30+_j*3,_BT+_SK,1),an(5)+move(_X+500,_Y,_X,_Y,0,400)+org(_X,_Y)+t(frx(3600))+b(1) ,_TXT)#入场效果
    ass_main(ASS_BUF,SubL(_BT+_SK,_BT+_SK+_KT,1),an(5)+pos(_X,_Y)+jitter(6,2,6,2,6,2)+blur(6)+b(1) ,_TXT)#表现方式
    ass_main(ASS_BUF,SubL(_BT+_SK+_KT,_ET,1),an(5)+pos(_X,_Y)+b(1) ,_TXT)#表现方式至退场效果之间的衔接
    ass_main(ASS_BUF,SubL(_ET,_ET+80-_j*3,1),an(5)+move(_X,_Y,_X-1000,_Y)+org(_X,_Y)+t(frx(360))+b(1) ,_TXT)#退场效果
上述这段代码来源于:[完整特效] [jiji]002_Uchouten_Kazoku_OP 可以看出SubL的写法跟Aegisub的retime函数有相似之处。 
 |