Aegisub 特效随记:音节计数器ci
本文发布于 1239 天前。

冒号自引用

冒号操作会带入一个self参数,用来代表自己。而点号操作,只是内容的展开。
sub函数用法可参考string.sub

local str = "abcde"
print("case 1:", str:sub(1, 2))
print("case 2:", str.sub(str, 1, 2))

>Output

case 1: ab
case 2: ab

在函数定义时,使用冒号将默认接收一个self参数,而使用点号则需要显式传入self参数。

例如

点号调用

girl = {money = 200}

function girl.goToMarket(girl ,someMoney)
    girl.money = girl.money - someMoney
end

girl.goToMarket(girl ,100)
print(girl.money)

引用参数self

girl = {money = 200}

function girl.goToMarket(self ,someMoney)
    self.money = self.money - someMoney
end

girl.goToMarket(girl ,100)
print(girl.money)

使用冒号调用

girl = {money = 200}

function girl:goToMarket(someMoney)
    self.money = self.money - someMoney
end

girl:goToMarket(100)
print(girl.money)

实际上,冒号的定义省略(或直接隐含定义)了第一个传入参数self。
即,如官方文档,

function t.a.b.c:f(params) 
    body 
end

is syntactic for

t.a.b.c.f = function (self, params) 
    body 
end

Lua gsub函数

需要注意的是,gsub函数与sub函数完全不同。

string.gsub(mainString,findString,replaceString,num)

在字符串中替换。
mainString为要操作的字符串,findString 为被替换的字符,replaceString 要替换的字符,num 替换次数(可以忽略,则全部替换),例如。

txt="abcde"
print(txt:gsub("c","1"))

此处用了:来实现自引用。

Aegisub unicode.len函数

length = unicode.len(instring)

以代码点为单位判断所给UTF-8编码的字符串的长度。
在Aegisub中使用时,应写

_G.unicode.len(string)

例如:计算段落字符数去标签后的字符数(都去掉了空格)

Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,code line,aa = _G.unicode.len(orgline.text:gsub(" ",""))  bb = _G.unicode.len(orgline.text_stripped:gsub(" ",""))
Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,template noblank,!aa! !bb!
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,{\k1}这是一 句测试
Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,fx,11 6这是一 句测试

Lua 构建Function

可以参考关于简单lua语句的摘记

计数器代码

参考了未知作者的关于retime函数的介绍中的内容

Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code once,function char_counter(ref) ci[1] = ci[1] + 1; return "" end
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code line,ci = {0}; cn = _G.unicode.len(orgline.text_stripped:gsub(" ",""))
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,template char,!char_counter(1)! si=!$si! ci=!ci[1]!
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,{\k1}无法{\k1}忘abc{\k1}记{\k1}你{\k1}的{\k1}声{\k1}音
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,{\k1}眼{\k1}泪{\k1}也{\k1}无{\k1}法{\k1}忘{\k1}记

简化版

Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code line,ci=0
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,code once,function countc() ci=ci+1 return ""end
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,template char,!countc()!ci=!ci! si=!$si!
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,{\k1}你{\k1}的声{\k1}音不{\k1}能{\k1}忘{\k1}记
Comment: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,karaoke,泪水也无法忘记

Reference

[1]https://blog.csdn.net/xiejunna/article/details/52143470
[2]https://www.w3cschool.cn/lua/o23m1te6.html
[3]https://www.runoob.com/lua/lua-strings.html

参考

这是一篇Aegisub专题,点击查看更多相关笔记
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇