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

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

[其他] NyuFX和PyonFX的区别之一(20220501) [复制链接]

Rank: 4

发表于 2022-5-1 03:10:54 |显示全部楼层
本帖最后由 Seekladoom 于 2022-5-1 03:15 编辑

NyuFX的syl.xxx如果没有事先赋值给别的变量(比如写成 _send = syl.end_time 这样)的话,就必须时刻跟一个for si, syl这样的for循环代码写在一起,否则无法使用。示例代码如下:
  1. io.load_ass( "templates\\单句测试文本\\CN_K.ass")

  2. function CN(line, l)
  3.     --下面的syl.xxx如不事先赋值给别的变量(比如写成 _send = syl.end_time 这样)的话,就必须跟左边这行for si, syl循环写在一起,否则会立马报错。

  4.     for si, syl in ipairs(line.syls) do
  5.         if syl.text ~= "" then
  6.             l.layer = 0
  7.             l.start_time = line.start_time + syl.end_time - syl.duration
  8.             l.end_time = line.end_time + syl.i * 30 + 200
  9.             l.text = string.format("{\\an5\\pos(%.f,%.f)\\blur2\\shad0\\fad(200,200)}%s", syl.center, syl.middle, syl.text)
  10.             io.write_line(l)
  11.         end
  12.     end
  13. end

  14. for li, line in ipairs(lines) do
  15.     if line.styleref.alignment == 2 then
  16.         CN(line, table.copy(line))
  17.     end
  18.     io.progressbar(li / #lines)
  19. end
复制代码


而PyonFX的syl.xxx不像NyuFX那样必须跟着for si, syl在几行内捆绑出现,示例代码如下:
  1. from pyonfx import *

  2. io = Ass("CN_K.ass", "CN_FX.ass")
  3. meta, styles, lines = io.get_data()

  4. def CN(line, l):
  5.     l.layer = 0
  6.     l.start_time = line.start_time + syl.end_time - syl.duration
  7.     l.end_time = line.end_time + syl.i * 30 + 200
  8.     l.text = "{\\an5\\pos(%.f,%.f)\\blur2\\shad0\\fad(200,200)}%s" % ( syl.center, syl.middle, syl.text )
  9.     io.write_line(l)
  10.    
  11. for line in lines:
  12.     for syl in line.syls: # PyonFX的syl.xxx不像NyuFX那样必须跟着for si, syl在几行内捆绑出现
  13.         if line.styleref.alignment == 2:
  14.             CN(line, line.copy())
  15.             
  16. io.save()
  17. io.open_aegisub()
复制代码

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

GitHub|TCAX 主页

GMT+8, 2024-3-29 21:34

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH