自定义特效编写模板tcaxPy_User函数用法例子

33 篇文章 0 订阅

说明
利用tcaxPy_User函数, 我们可以随意定制自己的特效模板. 比起直接使用tcaxPy_Main函数, 灵活性要大很多, 但tcaxPy_Main封装了许多细节, 使用起来更加简单. 下面这个例子, 既保持了tcaxPy_Main的简单性, 也提供了tcaxPy_User的灵活性, 值得参考. 使用tcaxPy_User函数, 需要在tcc文件中设置, < tcaxpy user = true >

例子
代码如下:
user_template_1.py

from tcaxPy import *

# 用户修订版的tcaxPy_Main函数, 保留原始tcaxPy_Main风格是为了减少额外记忆量, 实际上该函数形式可以非常多样化
def tcaxPy_Main_Fake(_i, _j, _n, _start, _end, _elapk, _k, _x, _y, _a, _txt, param):
    ASS_BUF  = []        # 保存ASS特效
    TCAS_BUF = []        # 保存TCAS特效
    ##### 主要特效编写操作 ####
    _Spacing = GetVal(val_Spacing)
    _Fs = GetVal(val_FontSize)
    dx = _x - int((_a + _Spacing) / 2 + 0.5)     # 一个固定操作, 将an5的坐标转换为an7
    dy = _y - int(_Fs / 2 + 0.5)                 # ASS特效默认采用an5坐标, TCAS特效则采用an7坐标
    # 增加特效
    # ass_main...
    ass_main(ASS_BUF, SubL(_start, _end), pos(_x, _y), _txt)
    # tcas_main...
    ##### 将结果返回给tcax进行处理 #####
    return (ASS_BUF, TCAS_BUF)

# 除了少数几个细节的不同, 本例子实际上就是TCAX内部对tcaxPy_Main函数的封装方法
def tcaxPy_User():
    # 创建ASS文件
    file_name  = GetVal(val_OutFile) + '.ass'
    ass_header = GetVal(val_AssHeader)
    ASS_FILE   = CreateAssFile(file_name, ass_header)
    # 创建TCAS文件
    file_name  = GetVal(val_OutFile) + '.tcas'
    fx_width   = GetVal(val_ResolutionX)
    fx_height  = GetVal(val_ResolutionY)
    fx_fps     = GetVal(val_FXFPS)
    TCAS_FILE  = CreateTcasFile(file_name, fx_width, fx_height, fx_fps)
    # 基本数据, 如果需要查看含义, 请取消下面两行代码的注释
    #GetHelp()
    #Pause()
    fontSize   = GetVal(val_FontSize)
    marginX    = GetVal(val_OffsetX)
    marginY    = GetVal(val_OffsetY)
    spacing    = GetVal(val_Spacing)
    lineNum    = GetVal(val_nLines)
    textNum    = GetVal(val_nTexts)
    start      = GetVal(val_BegTime)
    end        = GetVal(val_EndTime)
    kar        = GetVal(val_KarTime)
    elapKar    = GetVal(val_KarTimeDiff)
    text       = GetVal(val_Text)
    textLength = GetVal(val_TextLength)
    advance    = GetVal(val_TextAdvance)
    advDiff    = GetVal(val_TextAdvanceDiff)
    # 主循环
    for i in range(lineNum):
        initPosX = marginX                                          # an 7, 4, 1
        #initPosX = (fx_width - textLength[i]) / 2 + marginX        # an 8, 5, 2
        #initPosX = fx_width - textLength[i] - marginX              # an 9, 6, 3
        initPosY = marginY                                          # an 7, 8, 9
        #initPosY = fx_height / 2 - marginY                         # an 4, 5, 6
        #initPosY = fx_height - fontSize - marginY                  # an 1, 2, 3
        for j in range(textNum[i]):
            if text[i][j] == '' or text[i][j] == ' ' or text[i][j] == ' ':
                continue
            posX = initPosX + advDiff[i][j] + advance[i][j] / 2
            posY = initPosY + fontSize / 2
            param = [None]      # 传递需要的参数到tcaxPy_Main_Fake函数中
            ASS_BUF, TCAS_BUF = tcaxPy_Main_Fake(i, j, textNum[i], start[i], end[i], elapKar[i][j], kar[i][j], posX, posY, advance[i][j], text[i][j], param)
            if len(ASS_BUF) > 0:
                WriteAssFile(ASS_FILE, ASS_BUF)
            if len(TCAS_BUF) > 0:
                WriteTcasFile(TCAS_FILE, TCAS_BUF)
            Progress(i, j)      # 显示进度
    FinAssFile(ASS_FILE)
    FinTcasFile(TCAS_FILE)

以下两个脚本都利用了这模板:
[J]032_Gundam_Seed_OP特效脚本 (附完整工程)
[J]034_Another_OP特效脚本 (附完整工程)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值