版权声明:本文为博主原创文章,转载请保留原作者名和原文链接。 https://blog.csdn.net/Likianta/article/details/79341199
本文的基本操作是非常简单的,只需将选择的字幕删除即可。难点在于如何对删除后的列表编号重新排序。
“删除”按钮触发逻辑图
基本删除操作 onBtn3Click()
下面会贴出完整的代码,详细的注解会在//
中给出。
如需回顾其他章节的函数或者理解更深入,可以参考本套教程附加的文档:
- LK脚本开发相关语法参考
- Adobe脚本代码书写规范以及官方文档(结合文末的参考页码查阅):
- JavaScript Tools Guide CC.pdf
- After Effects CS6 Scripting Guide.pdf
{
// LK Subtitle Generator.jsx
// LK字幕生成工具
function LK_SubtitleGenerator(thisObj)
{
...
function onBtn3Click() {
// 删除被选中的字幕
s = listbox.selection; // 获得当前被选中的字幕,如果没有选择任何字幕,则返回一个`null`
if (s != null) { // 判断是不是null,是的话要予以提醒
listbox.remove(s);
} else { // 予以提醒:“请先选好一个列表项”
alert('Please choose any listItem first', 'Tip');
}
}
...
}
LK_SubtitleGenerator(this);
}
改进:在删除后对列表编号重新排序
假设我们一共有5条字幕,现在删除第3条,则变化情况为:
listbox.items[i] |
删除前 | 删除后 |
---|---|---|
items[0] |
01 | 01 |
items[1] |
02 | 02 |
items[2] |
03 | 04 |
items[3] |
04 | 05 |
items[4] |
05 |
因此onBtn3Click
的完整代码如下:
{
// LK Subtitle Generator.jsx
// LK字幕生成工具
function LK_SubtitleGenerator(thisObj)
{
...
function onBtn3Click() {
// 删除被选中的字幕
s = listbox.selection; // 获得当前被选中的字幕,如果没有选择任何字幕,则返回一个`null`
var m = s.text; // 获取待删项的编号,注意一定要在删除之前获取,另外需要注意的是假如它是个位数,那么它的形式是“03”而不是“3”
var n = id; // 获取删除前的id值(此值也就相当于删除前的字幕总条数)
if (s != null) {
listbox.remove(s);
} else {
alert('Please choose any listItem first', 'Prompt');
}
if (m == n) { // 如果`m = n`,则说明删除的是最后一项,所以只需要将id值-1即可
id -= 1;
} else {
for (id = m * 1; m <= id < n; id++) { // 这里之所以定义`id=m*1`,是因为m的形式是“03”(字符串类型),因此我们要对它转成数字“3”
// 个位数需要进行补零操作:01, 02, 03...
if (id < 10) {
listbox.items[id-1].text = '0' + id;
} else {
listbox.items[id-1].text = id;
}
}
// 记录此次操作的item和time(略),以供后续回调
last_item = listbox.items[id-1];
// 强制激活listbox,使编号立即被显示
s = listbox.add('item', '');
listbox.remove(s);
}
}
...
}
LK_SubtitleGenerator(this);
}
运行效果图
为了节省演示时间,我把清空edt的操作暂时删去了:
下章链接:08 生成字幕图层
参考
- JavaScript Tools Guide CC
- selection - p139
- remove item - p145