代码
/**
* @description : 获取本工程所有效果,并复制到剪切板
* @link: https://www.yuelili.com/?p=18805
*/
var previousComps;
var effect_list = [];
function folder_recursive(folderGroup) {
for (var i = 1; i <= folderGroup.numItems; i++) {
var items = folderGroup.item(i);
num += 1;
// 判断当前属性是否为文件夹,如果是,则继续遍历
if (items instanceof FolderItem) {
//对每个文件夹逐个操作 比如判断名称
folder_recursive(items);
continue;
}
if (items instanceof CompItem) {
previousComps = [];
comp_recursive(items);
}
}
}
folder_recursive(app.project.rootFolder);
send_to_clipboard(uniqueArray(effect_list))
function effect_recursive(layer) {
var eff = layer.property("ADBE Effect Parade");
for (var i = 1, l = eff.numProperties; i <= l; i++) {
effect_list.push(eff(i).name); // 对每个效果进行操作
// effectMissing(eff(i).matchName) // 如果你想的话,这里可以获取缺失效果
}
}
function send_to_clipboard(info) {
var cmd, isWindows;
// 判断是不是字符串
info = typeof info === "string" ? info : info.toString();
isWindows = $.os.indexOf("Windows") !== -1;
//OS的命令
cmd = 'echo "' + info + '" | pbcopy';
//windows的cmd命令
if (isWindows) {
cmd = 'cmd.exe /c cmd.exe /c "echo ' + info + ' | clip"';
}
system.callSystem(cmd);
}
function uniqueArray(arr) {
return arr.filter(function (item, pos) {
return arr.indexOf(item) == pos;
});
}
function comp_recursive(comp) {
// 循环合成内的图层与子合成
for (var i = 1; i <= comp.numLayers; i++) {
var layer = comp.layer(i);
// 检查图层是否有源 并且类型为合成
if (layer.source && layer.source instanceof CompItem) {
// 检查是否遍历过该合成
check = checkPreviousComps(layer.source.id);
if (check == null) {
// 存储原合成id 用于校对
var sourceID = layer.source.id;
// 再次遍历
comp_recursive(layer.source);
// 存储新合成id 用于校正
var destID = layer.source.id;
// 添加校正id到数组
previousComps[sourceID] = destID;
} else {
}
}
effect_recursive(layer);
}
// 为了递归,返回复制后的合成
return comp;
}
// 检查以前的复制,确保一个合成不会复制两次
function checkPreviousComps(checkID) {
if (previousComps[checkID]) {
return getItemWithID(previousComps[checkID]);
}
return null;
}
// 返回具有指定 ID 的项目
function getItemWithID(id) {
for (x = 1; x <= app.project.numItems; x++) {
if (app.project.item(x).id == id) {
return app.project.item(x);
}
}
return null;
}
/**
* @description:检查效果是否缺失
* @param {*} eff 效果匹配名
* @returns 没有就返回true
*/
function effectMissing(eff) {
var installedEffects = getInstalledEffects();
if (is_in_array(installedEffects, eff)) {
return false;
} else {
return true; // Missing
}
function getInstalledEffects() {
var installedEffects = [];
var EFFECTS = app.effects;
for (var i = 0, il = EFFECTS.length; i < il; i++) {
installedEffects.push(EFFECTS[i].matchName);
}
return installedEffects;
}
function is_in_array(arr, v) {
for (var i = 0; i < arr.length; i++) {
if (v === arr[i]) {
return true;
}
}
return false;
}
}
这篇的颜色咋是这种呢?
什么颜色