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

标题: 整行效果的寫法 [打印本页]

作者: saiyaku    时间: 2012-8-28 17:16:51     标题: 整行效果的寫法

游風要的例子 填完坑 差點忘了
預覽見ass    test.ass (13.31 KB, 下载次数: 3959)

不是怎麼建議這麼寫 效果也相對很有局限性
如果想實現同樣的效果 還是建議分字算距離
不過作為文字列操作的方法 倒是可以借鑒一下
一般來說這種自由度比較高的寫法 用user函數來寫
不過自從囧過滑頭鬼ED後,我發現main其實更方便
  1. from tcaxPy import *

  2. def tcaxPy_Init():
  3.     global _KTF
  4.     global _TXTF
  5.     global _SKF
  6.     _KTF          = GetVal(val_KarTime)
  7.     _TXTF         = GetVal(val_Text)
  8.     _SKF          = GetVal(val_KarTimeDiff)

  9. def tcaxPy_Main(_i, _j, _n, _BT, _ET, _SK, _KT, _X, _Y, _A, _TXT):

  10.     ASS_BUF  = []                # 保存ASS特效

  11.     if _j== 0:
  12.         EFT =  ''.join( '{\\r'+t(_SKF[_i][k]*10,_SKF[_i][k]*10+15,fsc(180,180))+t(_SKF[_i][k]*10+100,(_SKF[_i][k]+_KTF[_i][k])*10,fsc(100,100))+ '}'+_TXTF[_i][k]  for k in range(_n))
  13.         ass_main(ASS_BUF, SubL(_BT, _ET),an(2)+pos(640,360)+fad(150,150),EFT)

  14.     return (ASS_BUF,None)
复制代码


附件: test.ass (2012-8-28 17:14:46, 13.31 KB) / 下载次数 3959
http://tcax.org/forum.php?mod=attachment&aid=OTI3fDczZDQ5ZTBmfDE3MzIyOTAxNjd8MHww
作者: youkaze    时间: 2012-8-28 17:18:30

感谢 sai大
作者: kk123456    时间: 2012-8-28 20:13:05

很强大
作者: milkyjing    时间: 2012-8-28 21:44:17

补充相关链接:

http://www.tcax.org/forum.php?mod=viewthread&tid=127

http://www.tcax.org/forum.php?mod=viewthread&tid=191

http://www.tcax.org/forum.php?mod=viewthread&tid=278


作者: oloroso    时间: 2013-1-29 21:03:50

忽然明白了什么叫‘整行特效’...但是EFT那一段真心...一个字没懂...
作者: milkyjing    时间: 2013-1-29 21:52:23

oloroso 发表于 2013-1-29 21:03
忽然明白了什么叫‘整行特效’...但是EFT那一段真心...一个字没懂...

Python對字符串的處理...
需要對Python有個大概的了解.

在這個基礎上, 可以對腳本進行"調試", 即:
在17行上面插入
print(EFT)
Pause()
兩行代碼.



作者: oloroso    时间: 2013-1-31 22:10:15

本帖最后由 oloroso 于 2013-1-31 22:16 编辑

谢谢牛奶..按照泥的‘调试’...输出了这堆东西... EFT调试.jpg
...觉得挺神奇的,谢谢。

ps: 有点诧异,其实还是有点不懂...(蹦~

图片附件: EFT调试.jpg (2013-1-31 22:12:23, 115.05 KB) / 下载次数 1825
http://tcax.org/forum.php?mod=attachment&aid=MTE4N3xmOGE3ZmRlM3wxNzMyMjkwMTY3fDB8MA%3D%3D


作者: 渣渣疯子    时间: 2013-1-31 23:29:39

oloroso 发表于 2013-1-31 22:10
谢谢牛奶..按照泥的‘调试’...输出了这堆东西...
...觉得挺神奇的,谢谢。

那就是个暂停看输出的东西,有时候有些地方弄不明白,就可以看看输出是什么
作者: yyxxlc    时间: 2013-9-18 20:14:03

本帖最后由 yyxxlc 于 2013-9-18 20:19 编辑

sai大!我想问下~
  1. EFT =  ''.join( '{\\r'+t(_SKF[_i][k]*10,_SKF[_i][k]*10+15,fsc(180,180))+t(_SKF[_i][k]*10+100,(_SKF[_i][k]+_KTF[_i][k])*10,fsc(100,100))+ '}'+_TXTF[_i][k]  for k in range(_n))
复制代码
为什么不可以写成:
  1. for k in range(_n) :
  2.    EFT= ''.join( '{\\r'+t(_SKF[_i][k]*10,_SKF[_i][k]*10+15,fsc(180,180))+t(_SKF[_i][k]*10+100,(_SKF[_i][k]+_KTF[_i][k])*10,fsc(100,100))+ '}'+_TXTF[_i][k])
复制代码
我试了下把循环放在上面,但是输出来的结果的确不太正常,今天我几乎翻了python语法一天了,都找不到这种把循环写在后面的情况(也许是看漏了吧  但是1000多页的pdf  全都是字母 我头疼T_T),我想问问您  这种放在后面的话和放在前面理论上的区别是什么 ,那个我时候中间加 print和pause了 但是因为输出的都是结果 我、我总结不出来.....所以能不能麻烦您小小的给我讲下啊~

因为发现输出的结果只有每一句都只有最后一个字了,于是我当时把它改成了:
  1. a=[]
  2. for k in range(_n):
  3.     EFT= ''.join( '{\\r'+t(_SKF[_i][k]*10,_SKF[_i][k]*10+15,fsc(180,180))+t(_SKF[_i][k]*10+100,(_SKF[_i][k]+_KTF[_i][k])*10,fsc(100,100))+ '}'+_TXTF[_i][k])
  4.     a.append(EFT)
  5.     ass_main(ASS_BUF, SubL(_BT, _ET),an(2)+pos(640,360)+fad(150,150),a)
复制代码
虽然动作是对的,但是文字全变成[A,B,C,D,....]这种诡异的样子了。
作者: saiyaku    时间: 2013-9-18 22:18:03

yyxxlc 发表于 2013-9-18 20:14
sai大!我想问下~为什么不可以写成:我试了下把循环放在上面,但是输出来的结果的确不太正常,今天我几乎翻 ...

放前面放後面本質上沒什麽區別 只是我懶。。。
另外文本好長 我也懶得讀(w
總之for寫前面的話 我一般是這麼寫
  1.         EFT = ''
  2.         for k in range(_n):
  3.             EFT +=  '{\\r'+t(_SKF[_i][k]*10,_SKF[_i][k]*10+15,fsc(180,180))+t(_SKF[_i][k]*10+100,(_SKF[_i][k]+_KTF[_i][k])*10,fsc(100,100))+ '}'+_TXTF[_i][k]
  4.         ass_main(ASS_BUF, SubL(_BT, _ET),an(2)+pos(640,360)+fad(150,150),EFT)
复制代码
感覺沒什麼好深究只是一個寫法
找了一篇關於這個的 可以參考
http://descriptor.blogspot.jp/2008/11/python-idiom-join.html
作者: yyxxlc    时间: 2013-9-18 22:35:02

saiyaku 发表于 2013-9-18 22:18
放前面放後面本質上沒什麽區別 只是我懶。。。
另外文本好長 我也懶得讀(w
總之for寫前面的話 我一般是 ...

谢、谢谢!  (PS:网页打不开泪)
作者: saiyaku    时间: 2013-9-18 22:47:28

那轉一下吧
原文:http://descriptor.blogspot.jp/2008/11/python-idiom-join.html


如果要將一個 list 中的所有字串接起來 ,一般的做法是
  1. items = ['red', 'blue', 'green', 'yellow']

  2. result = ''
  3. for s in items:
  4.     result += s
复制代码
Python 提供了一個更有效率的解法
  1. result = ''.join(items)
复制代码


如果字串中間要用逗號跟空白做分隔時,只要改成
  1. result = ', '.join(items)
复制代码

單括號內的字串就是隔開 items 元素的分隔物, 所以如果單括號內是空的,就表示沒有分隔物。
底下介紹上述技巧的應用
  1. colors = ['red', 'blue', 'green', 'yellow']
  2. print 'Choose', ', '.join(colors[:-1]), 'or', colors[-1]
复制代码

會傳回一個 list 包含 colors 內的所有元素除了最後一個, 而 colors[-1] 代表 colors 的最後一個元素。
所以執行上面的程式碼會顯示
  1. Choose red, blue, green or yellow
复制代码

假設在把字串接起來之前,想要對字串做一些處理, 比方說轉成大寫,一般的想法是
  1. items = ''
  2. for c in colors:
  3.      items += c.upper()
复制代码

有了 join 之後,也是一行就可完成
  1. items = ''.join(c.upper() for c in colors)
复制代码

眼尖的人會發現上面一行還用了 list comprehensions

PS. Python 的創造者 Guido van Rossum 寫過一篇 最佳化軼事 內容與字串相關,值得一讀。






作者: yyxxlc    时间: 2013-9-18 22:51:50

saiyaku 发表于 2013-9-18 22:47
那轉一下吧
原文:http://descriptor.blogspot.jp/2008/11/python-idiom-join.html

sai大 果然是天使!  谢谢啦  中秋快乐~兔美君会一直保佑您的!
作者: saiyaku    时间: 2013-9-18 23:13:00

yyxxlc 发表于 2013-9-18 22:51
sai大 果然是天使!  谢谢啦  中秋快乐~兔美君会一直保佑您的!

兎美君是誰?
作者: yyxxlc    时间: 2013-9-19 01:19:28

saiyaku 发表于 2013-9-18 23:13
兎美君是誰?

取自 名探侦だぞえ  うさみちゃん<------只是比较应了中秋节月亮上那只兔子的景~ 不过兔美约莫着是我最喜欢的兔子了(不要在意 我的重点是您是天使233)
作者: milkyjing    时间: 2013-9-23 21:12:46

yyxxlc 发表于 2013-9-18 22:51
sai大 果然是天使!  谢谢啦  中秋快乐~兔美君会一直保佑您的!

中秋快乐

回家了几天, 没上论坛..
作者: yyxxlc    时间: 2013-9-23 21:16:09

milkyjing 发表于 2013-9-23 21:12
中秋快乐

回家了几天, 没上论坛..

知道知道 您去相亲了~~~XD 话说不是有台风么 这么快就过啦  其实我就喜欢下雨天 莫名其妙的兴奋(放假的节奏) 可惜成都只有地震!
作者: milkyjing    时间: 2013-9-23 21:35:39

yyxxlc 发表于 2013-9-23 21:16
知道知道 您去相亲了~~~XD 话说不是有台风么 这么快就过啦  其实我就喜欢下雨天 莫名其妙的兴奋(放假的 ...

节奏有点奇怪啊...

怎么都说我回去相亲了... 都怪小天,  让他499




欢迎光临 TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua (http://tcax.org/) Powered by Discuz! X2