TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua

 找回密码
 新人加入
查看: 2160|回复: 0

[其他代码] Aegisub与TCAX识别函数变量写法上的差异 [复制链接]

Rank: 4

发表于 2021-8-25 22:33:16 |显示全部楼层
本帖最后由 Seekladoom 于 2021-8-26 04:01 编辑

【Aegisub:函数变量识别符为!!】
  1. [V4+ Styles]
  2. Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
  3. Style: OPCN,思源宋体,70,&H00FFFFFF,&H00000000,&H003767E6,&H00000000,-1,0,0,0,100,100,6,0,1,2,0,2,0,0,10,1

  4. Comment: 0,0:00:00.00,0:00:00.00,OPCN,,0,0,0,template char noblank,!retime("line",0,0)!{\an5\pos($center,$middle)\fry!math.random(30,60)!}
  5. Comment: 0,0:00:0.00,0:00:01.00,OPCN,,0,0,0,karaoke,{\k100}字幕测试
复制代码
注:!!是Aegisub的内置脚本语言AUTO4特有的函数变量识别符,原生Lua本身跟Python一样也是用()进行函数识别的,但在针对具体的嵌入式开发应用场景时会发生变化。

!!的函数识别逻辑在Aegisub的kara-templater.lua下,代码为:
  1. -- Function for evaluating expressions
  2.         local function expression_evaluator(expression)
  3.                 f, err = loadstring(string.format("return (%s)", expression))
  4.                 if (err) ~= nil then
  5.                         aegisub.debug.out(2, "Error parsing expression: %s\nExpression producing error: %s\nTemplate with expression: %s\n\n", err, expression, template)
  6.                         return "!" .. expression .. "!"
  7.                 else
  8.                         setfenv(f, tenv)
  9.                         local res, val = pcall(f)
  10.                         if res then
  11.                                 return val
  12.                         else
  13.                                 aegisub.debug.out(2, "Runtime error in template expression: %s\nExpression producing error: %s\nTemplate with expression: %s\n\n", val, expression, template)
  14.                                 return "!" .. expression .. "!"
  15.                         end
  16.                 end
  17.         end
复制代码


【TCAX:函数变量识别符为()】
  1. from tcaxPy import * #请用这个帖子(http://www.tcax.org/forum.php?mod=viewthread&tid=2120)中的tcaxPy.py文件

  2. def tcaxPy_Init():
  3.     pass
  4.    
  5. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):
  6.     ASS_BUF = []                # 用于保存ASS特效
  7.    
  8.     ass_main(ASS_BUF,SubL(_BT,_ET,0),an5+pos(_X,_Y)+fry(randint(30,60)),_TXT)
  9.    
  10.     return (ASS_BUF, None)
复制代码

您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2023-2-7 06:23

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH