批量变更图层叠加模式

批量变更图层叠加模式
(function (global) {
    eval(
        "@JSXBIN@ES@2.0@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"
    );

    //批量变更图层叠加模式 Beta 1.0.2 2021-11-01
    //© Raymond Yan 2021 (RaymondClr@outlook.com / QQ: 1107677019)

    var settings = new Settings();
    var userInterface = new UserInterface();
    var afterEffect = new AfterEffect();
    runScript();

    function runScript() {
        var buttons = userInterface.getButtons();
        buttons.forEach(function (button) {
            button.onClick = function () {
                afterEffect.changeBlendingMode(BlendingMode[this.mode]);
            };
        });
    }

    function Settings() {
        //配置按钮排列方向
        //可选参数:
        //row 排成一行
        //column 排成一列

        var buttonsDirection = "column";

        //配置按钮白名单
        //1、按钮排序:列表呈现顺序对应按钮在UI中的显示顺序,调整此顺序可对按钮排序。
        //2、按钮文字:中文内容为按钮显示文本,可按个人喜好更改。

        //注意事项

        //1、请务必遵从列表的现有书写格式进行增删改,否则,可能会引发程序错误。
        //2、左侧大写英文不可随意更改,此英文决定了叠加模式的最终结果;如需增删,仅可输入以下文档中列举的单词:
        //https://ae-scripting.docsforadobe.dev/layers/avlayer.html?highlight=blending#avlayer-frameblendingtype

        var whiteList = {
            ADD: "相加",
            ALPHA_ADD: "Alpha 添加",
            CLASSIC_COLOR_BURN: "经典颜色加深",
            CLASSIC_COLOR_DODGE: "经典颜色减淡",
            CLASSIC_DIFFERENCE: "经典差值",
            COLOR: "颜色",
            COLOR_BURN: "颜色加深",
            COLOR_DODGE: "颜色减淡",
            DANCING_DISSOLVE: "动态抖动溶解",
            DARKEN: "变暗",
            DARKER_COLOR: "较深的颜色",
            DIFFERENCE: "差值",
            DISSOLVE: "溶解",
            DIVIDE: "相除",
            EXCLUSION: "排除",
            HARD_LIGHT: "强光",
            HARD_MIX: "纯色混合",
            HUE: "色相",
            LIGHTEN: "变亮",
            LIGHTER_COLOR: "较浅的颜色",
            LINEAR_BURN: "线性加深",
            LINEAR_DODGE: "线性减淡",
            LINEAR_LIGHT: "线性光",
            LUMINESCENT_PREMUL: "冷光预乘",
            LUMINOSITY: "发光度",
            MULTIPLY: "相乘",
            NORMAL: "正常",
            OVERLAY: "叠加",
            PIN_LIGHT: "点光",
            SATURATION: "饱和度",
            SCREEN: "屏幕",
            SILHOUETE_ALPHA: "轮廓 Alpha",
            SILHOUETTE_LUMA: "轮廓亮度",
            SOFT_LIGHT: "柔光",
            STENCIL_ALPHA: "模板 Alpha",
            STENCIL_LUMA: "模板亮度",
            SUBTRACT: "相减",
            VIVID_LIGHT: "亮光",
        };
        return {
            getWhiteList: function () {
                return whiteList;
            },
            getDirection: function () {
                return buttonsDirection;
            },
        };
    }

    function AfterEffect() {
        function getActiveItem() {
            var activeItem = app.project.activeItem;
            var hasActiveItem = (function () {
                return activeItem instanceof CompItem && activeItem !== null;
            })();
            var result = { hasActiveItem: hasActiveItem };
            if (!hasActiveItem) return result;
            result.item = activeItem;
            return result;
        }

        function getSelectedLayers(activeItem) {
            var hasSelectedLayers = (function () {
                return activeItem.selectedLayers.length > 0;
            })();
            var result = { hasSelectedLayers: hasSelectedLayers };
            if (!hasSelectedLayers) return result;
            result.layer = activeItem.selectedLayers;
            return result;
        }

        function changeBlendingMode(newMode) {
            var activeItem = getActiveItem();
            if (!activeItem.hasActiveItem) return;
            var selectedLayers = getSelectedLayers(activeItem.item);
            if (!selectedLayers.hasSelectedLayers) return;
            selectedLayers.layer.forEach(function (layer) {
                layer.blendingMode = newMode;
            });
        }

        return {
            changeBlendingMode: changeBlendingMode,
        };
    }

    function UserInterface() {
        function initWindow() {
            this.center(), this.show();
        }

        function reLayoutManager() {
            this.layout.layout(true), this.layout.resize();
        }

        function resizeElements() {
            this.layout.resize();
        }

        function creatPalette() {
            return new Window("palette", "", undefined, { resizeable: true });
        }

        function getMainContainer() {
            return this instanceof Panel ? this : creatPalette();
        }

        function setContainerResponseEvents() {
            this.onResizing = this.onResize = resizeElements;
        }

        function initMainContainer() {
            var container = getMainContainer.call(this);
            setContainerResponseEvents.call(container);
            container.margins = 0;

            container.alignChildren = ["fill", "fill"];
            return container;
        }

        function initMainGroup(container) {
            var mainGroup = container.add("group");
            mainGroup.orientation = settings.getDirection();
            mainGroup.alignChildren = ["fill", "fill"];
            mainGroup.margins = 5;
            mainGroup.spacing = 5;
            return mainGroup;
        }

        var mainContainer = initMainContainer.call(global);
        var mainGroup = initMainGroup(mainContainer);

        var whiteList = settings.getWhiteList();
        for (var enumeratedValue in whiteList) {
            if (!BlendingMode.hasOwnProperty(enumeratedValue)) continue;
            var currentButton = mainGroup.add("button", undefined, whiteList[enumeratedValue]);
            currentButton.preferredSize = [200, 20];
            currentButton.mode = enumeratedValue;
        }

        (mainContainer instanceof Window ? initWindow : reLayoutManager).call(mainContainer);

        return {
            getButtons: function () {
                return Array.from(mainGroup.children);
            },
        };
    }
})(this);

 

 

给TA充电
共{{data.count}}人
人已充电
AE开发PS/PR/AI脚本脚本开发

【PR脚本】添加到AME渲染

2021-10-27 21:21:33

AE开发PS/PR/AI脚本脚本开发

【PR脚本】示例:移动后面剪辑到前面的末尾

2021-11-4 15:54:45

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索