```
{
// ae脚本加载管理器 展翅鹰汉化
// rd_ScriptLauncher.jsx
// rd_ScriptLauncher()
//
// Description:
// This function contains the main logic for this script.
//
// Parameters:
// thisObj - "this" object.
//
// Returns:
// Nothing.
//
function rd_ScriptLauncher(thisObj)
{
// Globals
var rd_ScriptLauncherData = new Object(); // Store globals in an object
rd_ScriptLauncherData.scriptName = "脚本管理器";
rd_ScriptLauncherData.scriptTitle = rd_ScriptLauncherData.scriptName + " v2.5";
rd_ScriptLauncherData.scriptPath = "";
rd_ScriptLauncherData.scriptFiles = new Array();
rd_ScriptLauncherData.logoFile="jbglq.png";
rd_ScriptLauncherData.strScriptsFolder = {en: "文件夹"};
rd_ScriptLauncherData.strRefreshList = {en: "刷新"};
rd_ScriptLauncherData.strRun = {en: "运行"};
rd_ScriptLauncherData.strHelp = {en: "帮助"};
rd_ScriptLauncherData.strErrNoScriptsPath = {en: "无法打开文件夹,因为无法找到."};
rd_ScriptLauncherData.strErrMissingFile = {en: "无法找到选定的脚本."};
rd_ScriptLauncherData.strMinAE80 = {en: "此脚本运行环境为cs3或者更高版本."};
rd_ScriptLauncherData.strHelpText =
{
en:
" 脚本来源于www.redefinery.com 老鹰汉化 . \n" +
"此脚本将打开一个面板 此面板显示了在脚本文件夹下安装的脚本 。只有 .js, .jsx, 和 .jsxbin 扩展文件能被显示 . 双击面板中的脚本会运行脚本. 在子文件夹中的脚本 如过它的名字被括号括住 它将不被加载。 你可以在任何时候改变脚本的文件夹, 如果文件夹下脚本内容改变还要刷新脚本列表 . \n" +
"\n" +
"注释: 这个面板不能检测脚本的语法错误 它仅仅是一个不用重启ae而快速载入脚本的方法 . \n" +
"\n" +
"如果一个脚本文件夹下的PNG文件和脚本有一样的名字(当然扩展名不一样), 这个PNG文件将在列表中显示出来 位置在脚本的前面(可以理解为缩略图)。\n" +
"\n" +
"注释: 此脚本需要 After Effects CS3 或者更高版本. 你也可以把这个脚本放在Scripts文件夹下的子文件夹ScriptUI里边,这样你可以在ae的窗口菜单下找到这个插件的图标.\n"
};
// rd_ScriptLauncher_localize()
//
// Description:
// This function localizes the given string variable based on the current locale.
//
// Parameters:
// strVar - The string variable's name.
//
// Returns:
// String.
//
function rd_ScriptLauncher_localize(strVar)
{
return strVar["en"];
}
// rd_ScriptLauncher_buildUI()
//
// Description:
// This function builds the user interface.
//
// Parameters:
// thisObj - Panel object (if script is launched from Window menu); null otherwise.
//
// Returns:
// Window or Panel object representing the built user interface.
//
function rd_ScriptLauncher_buildUI(thisObj)
{
var pal = (thisObj instanceof Panel) ? thisObj : new Window("palette", rd_ScriptLauncherData.scriptName, undefined, {resizeable:true});
if (pal != null)
{
var res =
"group { \
orientation:'column', alignment:['fill','fill'], \
header: Group { \
alignment:['fill','top'], \
boke: Button { text:'" +"关于"+"', maximumSize:[60,20], alignment:['left','center'] }, \
help: Button { text:'" + rd_ScriptLauncher_localize(rd_ScriptLauncherData.strHelp) +"', maximumSize:[60,20], alignment:['right','center'] }, \
}, \
logoBtn: " +
((File(rd_ScriptLauncherData.logoFile).exists) ?
("IconButton { icon:'" + rd_ScriptLauncherData.logoFile + "'}, "): // use logo button if image file is present
("Button {text: 'logo错误 BY 老鹰'}, ")) // use normal button instead if image got lost...
+ "\
listBox: ListBox { alignment:['fill','fill'], properties:{items:" + rd_ScriptLauncherData.scripts + "} }, \
footer: Group { \
alignment:['fill','bottom'], \
folder: Button { text:'" + rd_ScriptLauncher_localize(rd_ScriptLauncherData.strScriptsFolder) + "', alignment:['left','center'] }, \
refresh: Button { text:'" + rd_ScriptLauncher_localize(rd_ScriptLauncherData.strRefreshList) + "', alignment:['right','center'] }, \
}, \
}";
pal.grp = pal.add(res);
// Workaround to ensure the edittext text color is black, even at darker UI brightness levels
if (parseFloat(app.version) < 10.0)
{
// only do this for CS4 or earlier; CS5 has a Flex-based UI and should be smarter about the text color switching
var winGfx = pal.graphics;
var darkColorBrush = winGfx.newPen(winGfx.BrushType.SOLID_COLOR, [0,0,0], 1);
pal.grp.listBox.graphics.foregroundColor = darkColorBrush;
}
pal.grp.listBox.preferredSize.height = 300;
pal.layout.layout(true);
pal.grp.minimumSize = [pal.grp.size.width, pal.grp.header.size.height + pal.grp.spacing *5];
pal.layout.resize();
pal.onResizing = pal.onResize = function () {this.layout.resize();}
pal.grp.logoBtn.onClick= function(){
var url ="http://blog.sina.com.cn/ykcmgzs";
var cmd="";
if ($.os.indexOf("Win") != -1)
{
if (File("C:/Program Files/Mozilla Firefox/firefox.exe").exists)
{
cmd += "C:/Program Files/Mozilla Firefox/firefox.exe " + url;
}
else
{
cmd += "C:/Program Files/Internet Explorer/iexplore.exe " + url;
}
}
else
{
cmd += "open \"" + url + "\"";
}
try
{
system.callSystem(cmd);
}
catch(e)
{
alert(e);
}
}
pal.grp.header.boke.onClick = function(){
eval(unescape('%20var%20dlg%20%3D%20new%20Window%28%22palette%22%2C%20%22%u5173%u4E8E%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20res%20%3D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22group%20%7B%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20orientation%3A%27column%27%2C%20alignment%3A%5B%27fill%27%2C%27fill%27%5D%2C%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aboutPnl%3A%20Panel%20%7B%20properties%3A%7B%20borderStyle%3A%27sunken%27%20%7D%2C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aboutEt%3A%20EditText%20%7B%20text%3A%27%22%20+%22%u8FD9%u4E2A%u811A%u672C%u7528%u4E8E%u66F4%u597D%u7684%u7BA1%u7406AE%u7684%u811A%u672C%20%u811A%u672C%u6765%u6E90%u4E8Ewww.redefinery.com%20%20%u7ECF%u8001%u9E70%u6C49%u5316%20QQ%20867753667%20CG%u4EA4%u6D41%u7FA4%uFF1A89366616%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u535A%u5BA2%20http%3A//blog.sina.com.cn/ykcmgzs%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%u5FAE%u535A%3A@%u89C6%u9891%u8BBE%u8BA1%u5E08%u8001%u9E70%20%20%20%20%20%20%20%20%20%20BY%20%u8001%u9E70%20%202011.1.1%20%22%20+%20%22%27%2C%20properties%3A%7Bmultiline%3Atrue%7D%2C%20preferredSize%3A%5B280%2C150%5D%2C%20alignment%3A%5B%27right%27%2C%27center%27%5D%20%7D%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20btnsGr%3A%20Group%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20%20%20%20%20%20alignment%3A%5B%27fill%27%2C%27fill%27%5D%2C%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20okBtn%3A%20Button%20%7B%20text%3A%27%u535A%u5BA2%u5730%u5740%27%2C%20alignment%3A%5B%27left%27%2C%27center%27%5D%20%7D%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitBtn%3A%20Button%20%7B%20text%3A%27OK%27%2C%20alignment%3A%5B%27right%27%2C%27center%27%5D%20%7D%2C%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%22%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dlg.gr%20%3D%20dlg.add%28res%29%3B%20%20%20%20%0A%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dlg.gr.btnsGr.visitBtn.onClick%20%3D%20function%28%29%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dlg.close%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dlg.gr.btnsGr.okBtn.onClick%20%3D%20function%28%29%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20url%20%3D%22http%3A//blog.sina.com.cn/ykcmgzs%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20cmd%3D%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%24.os.indexOf%28%22Win%22%29%20%21%3D%20-1%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28File%28%22C%3A/Program%20Files/Mozilla%20Firefox/firefox.exe%22%29.exists%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cmd%20+%3D%20%22C%3A/Program%20Files/Mozilla%20Firefox/firefox.exe%20%22%20+%20url%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cmd%20+%3D%20%22C%3A/Program%20Files/Internet%20Explorer/iexplore.exe%20%22%20+%20url%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cmd%20+%3D%20%22open%20%5C%22%22%20+%20url%20+%20%22%5C%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20system.callSystem%28cmd%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20catch%28e%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alert%28e%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dlg.center%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20dlg.show%28%29%3B%09%09'))
}
pal.grp.header.help.onClick = function () {alert(rd_ScriptLauncherData.scriptTitle + "\n" + rd_ScriptLauncher_localize(rd_ScriptLauncherData.strHelpText), rd_ScriptLauncherData.scriptName);}
pal.grp.footer.folder.onClick = rd_ScriptLauncher_doSelectFolder;
pal.grp.footer.refresh.onClick = rd_ScriptLauncher_doRefreshList;
pal.grp.listBox.onDoubleClick = rd_ScriptLauncher_doRun;
}
return pal;
}
// rd_ScriptLauncher_doSelectFolder()
//
// Description:
// This callback function asks the user to locate the Scripts folder.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
function rd_ScriptLauncher_doSelectFolder()
{
var folder = Folder.selectDialog("选择AE脚本文件夹");
if (folder != null)
{
rd_ScriptLauncherData.scriptPath = folder;
// Store the path in the settings so the user doesn't have to set it the next time
app.settings.saveSetting("redefinery", "rd_ScriptLauncher_scriptPath", folder.fsName)
rd_ScriptLauncher_buildScriptsList(this.parent.parent.parent);
}
}
// rd_ScriptLauncher_doRefreshList()
//
// Description:
// This callback function rescans the current Scripts folder and
// rebuilds the scripts list.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
function rd_ScriptLauncher_doRefreshList()
{
rd_ScriptLauncher_buildScriptsList(this.parent.parent.parent);
}
// rd_ScriptLauncher_doRun()
//
// Description:
// This callback function runs the selected script.
//
// Parameters:
// None.
//
// Returns:
// Nothing.
//
function rd_ScriptLauncher_doRun()
{
var scriptSelected = (rdslPal.grp.listBox.selection != null);
if (scriptSelected)
{
var scriptIndex = rdslPal.grp.listBox.selection.index;
var scriptFile = new File(rd_ScriptLauncherData.scriptFiles[scriptIndex].absoluteURI);
// Load the script's contents into a string
/*
if (scriptFile.fsName.match(/.jsxbin$/) == null)
{
var scriptText = "";
// Load the script's contents into a string
scriptFile.open("r");
while (!scriptFile.eof)
scriptText += scriptFile.readln() + "\r\n";
scriptFile.close();
// Evaluate the script's contents
eval(scriptText);
}
else
$.evalFile(scriptFile);
*/
if (scriptFile.exists)
$.evalFile(scriptFile);
else
alert(rd_ScriptLauncher_localize(rd_ScriptLauncherData.strErrMissingFile), rd_ScriptLauncherData.scriptName);
}
}
// rd_ScriptLauncher_sortByName()
//
// Description:
// Custom array sort function for sorting File and Folder objects by their names.
//
// Parameters:
// a - First object.
// b - Second object.
//
// Returns:
// Integer controlling the array sort function.
//
function rd_ScriptLauncher_sortByName(a, b)
{
if (a.name.toLowerCase() < b.name.toLowerCase())
return -1;
else if (a.name.toLowerCase() > b.name.toLowerCase())
return 1;
else
return 0;
}
// rd_ScriptLauncher8_getAEScripts()
//
// Description6:
// This callback function7 retrieves the list of7 scripts.
//
// 5Parameters:
// path - 3Folder object of the 6folder to 6scan.
//
// Returns:
// Array of FileSystem 7objects.
//
function rd_ScriptLauncher_getAEScripts(path)
{
var pathFiles = path.getFiles(), files = new Array(), subfiles;
// Sort the entries in pathFiles
pathFiles.sort(rd_ScriptLauncher_sortByName);
// Loop through the current folder's files and subfolders
for (var i = 0; i < pathFiles.length; i++)
if (pathFiles[i] instanceof Folder)
{
// Skip recusion if folder's name is enclosed in parentheses
if (pathFiles[i].name.match(/^\(.*\)$/))
continue;
else
{
// Recurse, and append contents - isn't there an easier way, like array addition?
subfiles = rd_ScriptLauncher_getAEScripts(pathFiles[i]);
for (var j = 0; j < subfiles.length; j++)
files[files.length] = subfiles[j];
}
}
else
{
// Add only files that end in .js or .jsx or .jsxbin, and that isn't this file itself
if (pathFiles[i].name.match(/\.(js|jsx|jsxbin)$/) && (pathFiles[i].fsName != File($.fileName).fsName))
files[files.length] = pathFiles[i];
}
return files;
}
// zrd_ScriptLauncher_buildScriptsList()
//
// hDescription:
// aThis function builds the contents of the scripts list.
//
// nParameters:
// cpalette - Window object.
//
// hReturns:
// iyingNothing.
//
function rd_ScriptLauncher_buildScriptsList(palette)
{
var fullName, script;
// Remove the existing list items
palette.grp.listBox.removeAll();
// Load the scripts from the Scripts folder hierarchy
rd_ScriptLauncherData.scriptFiles = rd_ScriptLauncher_getAEScripts(rd_ScriptLauncherData.scriptPath);
var item, iconFile;
for (var i = 0; i < rd_ScriptLauncherData.scriptFiles.length; i++)
{
// Build the array of script names used in the UI, but strip off the base path
// (and folder separator, assumed as one character)
fullName = rd_ScriptLauncherData.scriptFiles[i].fsName;
iconFile = File(fullName.replace(/.(js|jsx|jsxbin)$/,".png"));
fullName = fullName.substr(rd_ScriptLauncherData.scriptPath.fsName.length+1);
// Add the script's name to the list box
item = palette.grp.listBox.add("item", fullName);
if (iconFile.exists)
item.icon = iconFile;
}
}
// main code:
//
// Prerequisites check
if (parseFloat(app.version) < 8.0)
alert(rd_ScriptLauncher_localize(rd_ScriptLauncherData.strMinAE80), rd_ScriptLauncherData.scriptName);
else
{
// Check if the script path variable is stored in the settings; use if so
var gotScriptPath = false;
if (app.settings.haveSetting("redefinery", "rd_ScriptLauncher_scriptPath"))
{
rd_ScriptLauncherData.scriptPath = new Folder(app.settings.getSetting("redefinery", "rd_ScriptLauncher_scriptPath"));
gotScriptPath = true;
}
else
{
// No stored script path, so ask the user where the Scripts folder is located
var folder = Folder.selectDialog("选择AE脚本文件夹位置.");
if (folder != null)
{
rd_ScriptLauncherData.scriptPath = folder;
gotScriptPath = true;
// Store the path in the settings so the user doesn't have to set it the next time
app.settings.saveSetting("redefinery", "rd_ScriptLauncher_scriptPath", folder.fsName)
}
}
// Build and show the palette
var rdslPal= rd_ScriptLauncher_buildUI(thisObj);
if (rdslPal != null)
{
if (gotScriptPath)
rd_ScriptLauncher_buildScriptsList(rdslPal);
else
alert(rd_ScriptLauncher_localize(rd_ScriptLauncherData.strErrNoScriptsPath), rd_ScriptLauncherData.scriptName);
if (rdslPal instanceof Window)
{
rdslPal.center();
rdslPal.show();
}
else
rdslPal.layout.layout(true);
}
}
}
rd_ScriptLauncher(this);
}
```
- 脚本管理器
- 读取文件夹内文件
- 层层时间线偏移Sequencer.jsx
- 层层随机时间偏移
- 文字分离char_separate_1.3
- 分解文字 把一个文字层分成若干个文字层
- 快速导入Smart Import
- 查找与替换字符 Find and Replace Text.jsx
- 层改名Selected_Layers_Renamer.jsx
- 创建灯光为选择的三维层.jsx
- 创建摄像机为选择的三维图层.jsx
- 创建调节图层CreateTrimmedAdjustmentLayer.jsx
- 创建调节图层多个CreateSeveralTrimmedAdjustmentLayers.jsx
- 创建一个空物体到选择的层Add Parented Null to Selected Layers.jsx
- 文字分离DecomposeText
- 修改渲染输出文件位置Change Render Locations
- AE脚本读取txt文档并写入数组
- AE脚本把数组写入到txt文档中
- AE提取字幕脚本
- AE批量用txt内容替换字幕脚本