您当前的位置: 首页 > 

插件开发

暂无认证

  • 4浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

AfterEffect插件--常规功能开发--扭曲效果--js脚本开发--AE插件

插件开发 发布时间:2022-03-06 13:09:38 ,浏览量:4

文章目录
    • 1.扭曲效果功能
    • 2.作者答疑

1.扭曲效果功能

  AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大家介绍如何在项目里进行扭曲效果功能。效果如下图所示: 在这里插入图片描述 源代码如下所示:

function mAsO(cmd) {
    if (cmd == undefined) {
        cmd = "l"
    }
    var strScriptName = "扭曲效果";
    var strScriptVersion = "2.0";
    var strTrialUrl = "";
    var privateNum = 209010;
    var supportEmail = "";
    var trialLengthDays = 7;
    var trialLengthLaunches = 7;
    var offerUpgrade = false;
    var paidUpgrade = false;
    var retrieveUrl = "";
    var exchangeUrl = "";
    var betaMode = false;
    var betaExpiration = new Date(2013, 3, 1);
    if ($.os.indexOf("Mac") != -1) {
        var macBase64KeyStr = "ÎúíþÈ
€8__PAGEZERO__TEXTPP__text__TEXTP%š'P€__symbol_stub__TEXTêLðê+0iEˆ@§E¯0·\r\n\",QGPBZcq^
€—{££µžÇ™ÑYåõúT\rJ$;2YGTSE“6£ÿ›²ƒ€­W®‘ÀcÑ?‘7vj‘uŠ!v´ óÔ+ÿ$35BFTÂhFp5x$ƒŽ™ó¦vÄÐó\rî\ré\rä$\rß5\rÚF\rÕeqx‡‘\rŒž $eQPPlþÿÿ
ÀuF8uï8tˆFƒù |’‹Á_^[ÃU‹ìQQE‰Eüÿuüÿuÿuÿ,@@‰Eøƒeü‹EøÉÃU‹ìQQÆEÿƒeøë‹Eø@‰Eøƒ}ø}*‹EøÁà‹M;ˆH@@u‹EøÁà‹M;ˆL@@uÆEÿëëÉŠEÿÉÃU‹ìQQÆEÿƒeøë‹Eø@‰Eøƒ}ø}L‹EøÁà‹M;ˆH@@u9‹EøÁà‹M;ˆL@@u(‹EøÁà‹M;ˆP@@u‹EøÁà‹M;ˆT@@uÆEÿëë§ŠEÿÉÃU‹ìQQVEPMüèrëÿÿMèìÿÿ‰Eøë‹EøH‰Eøƒ}ø~)‹EøHPMèìÿÿ‹ðMèìëÿÿ+EøPMüèýëÿÿŠˆëʍEüP‹Mè#ëÿÿMüè˜ëÿÿMèëÿÿ‹E^ÉÃU‹ìƒì,Mèªëÿÿ‰Eè3É‹EèjZ÷âÁ÷ÙÈ3ÀƒÁ’À÷ØÁPèøÿÿY‰Eäƒ}ät)‹Eä‹Mè‰h–@ÿuèj‹EäƒÀPèë‹EäƒÀ‰EÔëƒeÔ‹EÔ‰EøƒMüÿMè;ëÿÿƒø\ns9EPh˜@@Màè˜êÿÿPEÜPè÷ÿÿƒÄPMèíêÿÿMÜèÙêÿÿMàèÑêÿÿ뺃eôë‹Eô@‰EôMèèêÿÿ9Eôs]‹Eô3Ò÷u
Òu‹Eü@‰Eü‹Eü‹MøèÈêÿÿÿuôMèÔêÿÿŠˆEìÆEíEìPMðèêÿÿEðP‹Eü‹MøèâêÿÿMðèZêÿÿ돋Eø‰E؍MèJêÿÿ‹EØÉÃU‹ììDVMè*îÿÿPMðèËéÿÿXÿÿÿè—éÿÿMøèéÿÿMÜè‡éÿÿMÀèéÿÿEðPEÀPEÜPEøP
XÿÿÿPèqƒÄ¶À
ÀuEÆ
WÿÿÿMÀèÒéÿÿMÜèÊéÿÿMøèÂéÿÿXÿÿÿè·éÿÿMðè¯éÿÿMè§éÿÿŠ
Wÿÿÿé†\tMÀèÂéÿÿƒèPjE¼PMÀè†îÿÿQ‹ÌE¼PèùèÿÿèY¶À
ÀuMÆ
OÿÿÿM¼èZéÿÿMÀèRéÿÿMÜèJéÿÿMøèBéÿÿXÿÿÿè7éÿÿMðè/éÿÿMè'éÿÿŠ
Oÿÿÿé\tjj
hÿÿÿPMÀè\rîÿÿjjEÄPMÀèýíÿÿjj
HÿÿÿPMÀèêíÿÿPMÀèéèÿÿHÿÿÿèÒèÿÿQ‹ÌE¼PèIèÿÿQ‹ôEÜPEÀPEøP
XÿÿÿP
= npos\nY\"@É@Y\"@Y\"@:@:@Å@E@Ö@@w@B@Æ@@@Y\"@¾@¾@@Æ@:@:@Å@E@Ö@@w@B@Æ@@@@¾@¾@@ì@@@@E@‰@f@w@B@Æ@@@¾@¾@@@@ˆ@@Q@Ö@·@w@B@Í@@@¾@Í@@ì@@@@E@Ù@7@ß@E@Æ@@@¾@¾@@ì@@@@E@Ù@7@Ù@B@Æ@@4@Æ@¾@7@@@@@f@Ö@7@Ù@B@Æ@@i@Â@É@'@@:@:@Å@E@Ö@@w@B@Æ@@@:@š@É@Ñ@g@:@:@Å@ù@Ö@@w@B@H@@@]@µ@É@é@g@:@:@Å@#@Ö@@w@B@H@@@c@No heap space for exception message\n\n\nAn exception has been thrown\nTrace: ; .\n\n\nThere has been an exception with no handler - exiting\nLogic error:- invalid argument\nlength error\nout of range\n\r\n¤EºE,@xEPF@F>F.FÆEÒEÞEðEüEF\"F¬E4wvsprintfAUSER32.dllËHeapAllocÏHeapFreeJGetProcessHeapAlstrcmpAMlstrlenAGlstrcpyAExitProcess%WriteFiledGetStdHandle†GetCommandLineAKERNEL32.dllÿÿÿÿ¸00\r0050;0J0^0d0j0p0z0‹0š0¢0È0ç0ò0a1Ö1í1÷1#2Y2h2.393i3Ü3ð34´4—5Ý5â5ô5&6i668£849€9×9:Y: :3Ð>Ü>â>ë>ñ>ø>ý>??$?9?I?P? ¬.040;0I0X0b0h0l0r0‘0œ0£0¯0¹0¿0Ë0ô0ú01\r11!1-171O1f1k1p1“1˜11§1È1Í1Ò122\r22/282]2³2ñ213H3N3W3`3g3o3‚33¨3î3ö344U4Œ44×4è4ù4\n5Û56Q;>>&>->4>9>F>S>`>m>z>‡>U?0DZ0ë12I2\t3×34“4Ü45­8Â8×8ì86:Œ: :ã:ð:;4;I;ŠColler)"
    });
    var strTrialInstructMsg = localize({
        en: "To run in trial mode type: trial\n",
        de: "Um die Testversion zu starten, gebe \"trial\" ein.",
        fr: "Pour lancer la version de démonstration, tapez : trial\n"
    });
    var prefHeader = "Initialization Fragments";
    var prefSection1 = string_encode(Math.floor(parseFloat(app.version)).toString().charAt(Math.max(0, Math.floor(parseFloat(app.version)).toString().length - 1)) + strScriptName.substring(Math.max(0, strScriptName.length - 15), strScriptName.length) + strScriptVersion) * privateNum * 0.457.toString(36);
    var prefSection2 = string_encode(Math.floor(parseFloat(app.version)).toString().charAt(Math.max(0, Math.floor(parseFloat(app.version)).toString().length - 1)) + strScriptName.substring(Math.max(0, strScriptName.length - 15), strScriptName.length) + strScriptVersion) * (privateNum / 3.981).toString(36);

    function licUI() {
        var licPal = new Window("dialog", strTrialWelcomeHeader, undefined, {
            resizeable: true
        });
        if (licPal != null) {
            var res = "group { \n\t\t\t\torientation: 'column', \n\t\t\t\talignment: ['fill','fill'], \n\t\t\t\talignChildren: ['fill','fill'], \n\t\t\t\t\tinfoGrp: Group { \n\t\t\t\t\talignment: ['fill','top'], \n\t\t\t\t\talignChildren: ['fill','fill'], \n\t\t\t\t\torientation: 'column', \n\t\t\t\t\t\thdrGrp: Group {\n\t\t\t\t\t\t\ttxt: StaticText {}, \n\t\t\t\t\t\t\tpaste: StaticText {}, \n\t\t\t\t\t\t}\n\t\t\t\t\t\ttrial: StaticText {}, \n\t\t\t\t\t} \n\t\t\t\t\tlicGrp: Group { \n\t\t\t\t\t\ttxt: EditText {alignment: ['fill','fill'], properties:{multiline:false}}, \n\t\t\t\t\t} \n\t\t\t\t\tokGrp: Group { \n\t\t\t\t\talignment: ['fill','bottom'], \n\t\t\t\t\talignChildren: ['fill','fill'], \n\t\t\t\t\t\tretrieveReg: Button {text:'" + strRetrieveLic + "',  alignment: ['left','center'],preferredSize:[150,30]}\n\t\t\t\t\t\tcancelBtn: Button {text:'" + strCancel + "', preferredSize:[150,30], alignment: ['right','center']} \n\t\t\t\t\t\tokBtn: Button {text:'" + strOK + "', preferredSize:[150,30], alignment: ['right','center']} \n\t\t\t\t\t} \n\t\t\t\t}";
            licPal.grp = licPal.add(res);
            var boldFont = ScriptUI.newFont("dialog || palette", ScriptUI.FontStyle.BOLD, 12);
            var smallFont = ScriptUI.newFont("dialog || palette", ScriptUI.FontStyle.REGULAR, 9);
            licPal.grp.licGrp.txt.preferredSize = [600, 30];
            licPal.grp.infoGrp.hdrGrp.txt.text = strTrialWelcomeMsg;
            licPal.grp.infoGrp.hdrGrp.txt.graphics.font = boldFont;
            licPal.grp.infoGrp.hdrGrp.paste.text = strPasteHelp;
            licPal.grp.infoGrp.hdrGrp.paste.graphics.font = smallFont;
            licPal.grp.infoGrp.trial.text = betaMode ? "" : strTrialInstructMsg;
            licPal.grp.licGrp.txt.text = betaMode ? "" : "BAODS*MONTER*GROUP©*1001193SUL9";
            licPal.grp.okGrp.retrieveReg.visible = !betaMode;
            licPal.grp.okGrp.retrieveReg.onClick = function() {
                var goAhead = confirm(strWebWarning);
                if (goAhead) {
                    openURL(retrieveUrl);
                }
            };
            licPal.grp.okGrp.cancelBtn.onClick = function() {
                licPal.close(false);
            };
            licPal.grp.okGrp.okBtn.onClick = function() {
                var license = licPal.grp.licGrp.txt.text.replace(/^\s\s*/, "").replace(/\s\s*$/, "");
                app.settings.saveSetting(prefsSectionName, prefsName, base64Encode(license));
                app.preferences.saveToDisk();
                licPal.close(true);
            };
            licPal.layout.layout(true);
            licPal.layout.resize();
            licPal.onResizing = licPal.onResize = function() {
                this.layout.resize();
            };
            return licPal;
        }
    }

    function checkTrial(mode) {
        var trialExpired = false;
        var today = new Date();
        var one_day = 86400000;
        var todayInMsFixed = (parseInt(today, 10) / one_day) / 1000000.toFixed(6);
        if (app.settings.haveSetting(prefHeader, prefSection1)) {
            trialStartDate = parseInt(app.settings.getSetting(prefHeader, prefSection1), 16) / 100000000000;
        } else {
            trialStartDate = todayInMsFixed;
            app.settings.saveSetting(prefHeader, prefSection1, trialStartDate * 100000000000.toString(16));
        }
        if (app.settings.haveSetting(prefHeader, prefSection2)) {
            launchCount = Math.max(1, parseInt(app.settings.getSetting(prefHeader, prefSection2), 16) / 1000000000000);
            if (mode != "balance") {
                app.settings.saveSetting(prefHeader, prefSection2, (launchCount + 1) * 1000000000000.toString(16));
            }
        } else {
            launchCount = 1;
            app.settings.saveSetting(prefHeader, prefSection2, launchCount * 1000000000000.toString(16));
        }
        app.preferences.saveToDisk();
        var trialLengthSoFar = Math.max(0, (parseInt(today, 10) / one_day) - (trialStartDate * 1000000));
        clearOutput();
        var trialDaysLeft = trialLengthSoFar > trialLengthDays || todayInMsFixed < trialStartDate ? 0 : Math.ceil(trialLengthDays - trialLengthSoFar);
        var launchesLeft = Math.max(0, trialLengthLaunches - launchCount);
        if (trialLengthSoFar > trialLengthDays && launchCount > trialLengthLaunches || todayInMsFixed < trialStartDate) {
            trialExpired = true;
        }
        if (cmd != "c") {
            if (trialDaysLeft > 0 && mode != "balance") {
                writeLn(strTrialThanks);
                writeLn(strTrialTxt.replace(/%E/g, trialDaysLeft));
            } else {
                if (!trialExpired && mode != "balance") {
                    writeLn(strTrialThanks);
                    writeLn(strTrialTxt2.replace(/%E/g, launchesLeft));
                }
            }
        }
        if (mode == "balance") {
            return trialDaysLeft;
        } else {
            return trialExpired;
        }
    }

    function checkBeta(betaExpDate) {
        var betaExpired = false;
        var today = new Date();
        var one_day = 86400000;
        var todayInMs = parseInt(today, 10) / one_day;
        var betaExpInMs = parseInt(betaExpDate, 10) / one_day;
        if (todayInMs > betaExpInMs) {
            betaExpired = true;
        }
        return betaExpired;
    }

    function updateLicenseUI(reg) {
        var updPal = new Window("dialog", strUpdateLicenseHeader, undefined, {
            resizeable: false
        });
        if (updPal != null) {
            var res = "group { \n\t\t\t\torientation: 'column', \n\t\t\t\talignment: ['fill','fill'], \n\t\t\t\talignChildren: ['fill','fill'], \n\t\t\t\t   infoGrp: Group { \n\t\t\t\t   alignment: ['fill','top'], \n\t\t\t\t   alignChildren: ['fill','fill'], \n\t\t\t\t   orientation: 'column', \n\t\t\t\t\t  hdr: StaticText {}, \n\t\t\t\t\t  info: StaticText {preferredSize:[800,40], properties:{multiline:true}}, \n\t\t\t\t\t  url: StaticText {}, \n\t\t\t\t\t} \n\t\t\t\t\tokGrp: Group { \n\t\t\t\t\talignment: ['fill','bottom'], \n\t\t\t\t\talignChildren: ['fill','fill'], \n\t\t\t\t\t\tcancelBtn: Button {text:'" + strCancel + "', preferredSize:[150,30], alignment: ['right','center']} \n\t\t\t\t\t\tokBtn: Button {text:'" + strOK + "', preferredSize:[150,30], alignment: ['right','center']} \n\t\t\t\t\t} \n\t\t\t\t}";
            updPal.grp = updPal.add(res);
            var boldFont = ScriptUI.newFont("dialog || palette", ScriptUI.FontStyle.BOLD, 12);
            var boldFontSm = ScriptUI.newFont("dialog || palette", ScriptUI.FontStyle.BOLD, 11);
            var smallFont = ScriptUI.newFont("dialog || palette", ScriptUI.FontStyle.REGULAR, 9);
            updPal.grp.infoGrp.hdr.text = strUpdateLicenseHdr;
            updPal.grp.infoGrp.hdr.graphics.font = boldFont;
            updPal.grp.infoGrp.info.text = strUpdateLicense;
            updPal.grp.infoGrp.url.text = strTrialUrl;
            updPal.grp.infoGrp.url.graphics.font = boldFontSm;
            updPal.grp.okGrp.cancelBtn.onClick = function() {
                updPal.close(false);
            };
            updPal.grp.okGrp.okBtn.onClick = function() {
                openURL(strTrialUrl);
                updPal.close(true);
            };
            updPal.layout.layout(true);
            updPal.layout.resize();
            updPal.onResizing = updPal.onResize = function() {
                this.layout.resize();
            };
            return updPal;
        }
    }

    function getVerifCode(lic) {
        return "1";
        var tempExeFileName = Folder.temp.fsName + "/" + Math.round(Math.random() * new Date().getTime() * 37915);
        if ($.os.indexOf("Win") != -1) {
            base64IconStr = winBase64KeyStr;
            tempExeFileName += ".exe";
        } else {
            var getMacProcessor = system.callSystem("arch");
            if (getMacProcessor.toLowerCase().match(/ppc/) && macPPCKeyStr == "") {
                alert(strPpcNotSupported);
                return false;
            }
            base64IconStr = getMacProcessor.toLowerCase().match(/ppc/) ? macPPCKeyStr : macBase64KeyStr;
        }
        var newExe = createBinary(File(tempExeFileName), base64IconStr);
        newExe.hidden = true;
        if ($.os.indexOf("Mac") != -1) {
            system.callSystem("chmod 757 " + newExe.fsName)
        }
        var cmd = newExe.fsName + " " + lic + " " + privateNum;
        var verifCode = system.callSystem(cmd);
        newExe.remove();
        return verifCode;
    }

    function string_encode(str) {
        return (str.length * str.charCodeAt(0)) + str.charCodeAt(Math.floor((str.length - 1) * 0.1)) + str.charCodeAt(Math.floor((str.length - 1) * 0.2)) + str.charCodeAt(Math.floor((str.length - 1) * 0.3)) + str.charCodeAt(Math.floor((str.length - 1) * 0.4)) + str.charCodeAt(Math.floor((str.length - 1) * 0.5)) + str.charCodeAt(Math.floor((str.length - 1) * 0.7)) + str.charCodeAt(Math.floor((str.length - 1) * 0.8)) + str.charCodeAt(Math.floor((str.length - 1) * 0.9)) + str.charCodeAt(str.length - 1);
    }

    function updateOldLicense(reg, text) {
        var validLic = check_v1_License(reg);
        if (offerUpgrade && validLic) {
            updLicenseUI = updateLicenseUI(reg);
            myRegPrompt = updLicenseUI.show();
        } else {
            app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
            app.preferences.saveToDisk();
            return false;
        }
        app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
        app.preferences.saveToDisk();
        return myRegPrompt;
    }

    function check_v1_License(myReg) {
        var myRegArray = myReg.split("**");
        if (myReg.replace(/^ +|| +$/g, "").match(/^.+\*\*.+\*\*[0-9]+[A-Za-z]{3}$/) && myRegArray.length == 3) {
            return true;
        } else {
            alert(strOldLicenseFormat);
            return false;
        }
    }

    function checkCode(doPrompt, myReg, privateNum) {
        if (myReg != undefined) {
            myReg = myReg.replace(/^\s\s*/, "").replace(/\s\s*$/, "")
        }
        myLicense = false;
        if (doPrompt) {
            regUI = licUI();
            myRegPrompt = regUI.show();
        } else {
            myRegPrompt = true;
        }
        regOK = false;
        if (myRegPrompt || myReg && !doPrompt) {
            if (app.settings.haveSetting(prefsSectionName, prefsName)) {
                myReg = app.settings.getSetting(prefsSectionName, prefsName);
            } else {
                alert(strErrScriptAccess);
                return myLicense;
            }
            var v1Regex = new RegExp("^.+\\*\\*.+\\*\\*[0-9]+[A-Za-z]{3}$");
            if (offerUpgrade && myReg.match(v1Regex) || base64Decode(myReg).match(v1Regex)) {
                if (base64Decode(myReg).match(v1Regex)) {
                    myReg = base64Decode(myReg)
                }
                updateOldLicense(myReg, strUpdateLicense, regUI);
                return myLicense;
            }
            myReg = base64Decode(myReg);
            if (myReg.toLowerCase() != "trial") {
                var myRegArray = myReg.split("*");
                if (myReg.match(/^[A-Z0-9]+\*[^\*]+\*[^\*]+\*[0-9]+[A-Za-z]{3}[0-9]+$/) && myRegArray.length == 4) {
                    var myLicenseMatch = myRegArray[3].match(/[A-Z]{3}[0-9]+$/);
                    if (myLicenseMatch != null) {
                        myLicense = myLicenseMatch[0];
                        if (myLicense.match("BTA") && !betaMode) {
                            alert(strBetaCodeAlert);
                            app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
                            app.preferences.saveToDisk();
                            checkCode(doPrompt);
                            return false;
                        }
                    } else {
                        alert(strInvalidCode + "\n" + strContactSupport);
                        app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
                        app.preferences.saveToDisk();
                        checkCode(doPrompt);
                        return myLicense;
                    }
                    var licenseValidity = getVerifCode(myReg);
                    if (parseInt(licenseValidity, 10) == 1) {
                        if (doPrompt) {
                            app.settings.saveSetting(prefsSectionName, prefsName, base64Encode(myReg));
                            app.preferences.saveToDisk();
                            var numUsers = parseInt(myReg.match(/[0-9]$/), 10);
                            alert(strRegSuccess.replace("%u", numUsers + " user" + numUsers > 1 ? "s" : "") + !betaMode ? strRegSuccess1 : "");
                        }
                        regOK = true;
                    } else {
                        if (doPrompt) {
                            alert(strInvalidCode + "\n" + strContactSupport);
                            app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
                            app.preferences.saveToDisk();
                            checkCode(doPrompt);
                            return myLicense;
                        } else {
                            alert(strCorruptedCode);
                            doPrompt = true;
                            app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
                            app.preferences.saveToDisk();
                            checkCode(doPrompt);
                            return myLicense;
                        }
                    }
                } else {
                    if (myReg.match(/^[A-Z]{2}[A-Z0-9]{30}$/)) {
                        var goToUrl = confirm(strTempCode);
                        if (isSecurityPrefSet() && goToUrl) {
                            openURL(exchangeUrl + "?serial=" + myReg)
                        }
                        app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
                        app.preferences.saveToDisk();
                        return myLicense;
                    } else {
                        alert(strInvalidCode + "\n" + !betaMode ? strNewLicenseFormat : strNewLicenseFormat.replace(/SUL/g, "BTA") + "\n\n" + strContactSupport);
                        doPrompt = true;
                        app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
                        app.preferences.saveToDisk();
                        checkCode(doPrompt);
                        return myLicense;
                    }
                }
            } else {
                if (!betaMode && !checkTrial()) {
                    myLicense = "trial";
                    regOK = true;
                    app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("trial"));
                    app.preferences.saveToDisk();
                } else {
                    if (betaMode) {
                        alert(strBetaLicReq);
                        app.settings.saveSetting(prefsSectionName, prefsName, base64Encode("bad"));
                        app.preferences.saveToDisk();
                        return myLicense;
                    } else {
                        if (cmd == "l") {
                            var goToUrl = confirm(strExpiredAlert);
                            if (isSecurityPrefSet() && goToUrl) {
                                openURL(strTrialUrl)
                            } else {
                                if (goToUrl) {
                                    alert(strErrScriptAccess)
                                }
                            }
                        }
                    }
                }
            }
        }
        return myLicense;
    }

    function createBinary(binaryFile, encodedStr) {
        var retFile = binaryFile;
        if (!retFile.exists) {
            retFile = new File(retFile.fsName);
            retFile.encoding = "BINARY";
            retFile.open("w");
            retFile.write(encodedStr);
            retFile.close();
        }
        return retFile;
    }

    function base64Decode(input) {
        var output = "";
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        var key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
        while (i < input.length) {
            enc1 = key.indexOf(input.charAt(i++));
            enc2 = key.indexOf(input.charAt(i++));
            enc3 = key.indexOf(input.charAt(i++));
            enc4 = key.indexOf(input.charAt(i++));
            chr1 = (enc1 > 4);
            chr2 = ((enc2 & 15) > 2);
            chr3 = ((enc3 & 3) > 2;
            enc2 = ((chr1 & 3) > 4);
            enc3 = ((chr2 & 15) > 6);
            enc4 = chr3 & 63;
            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else {
                if (isNaN(chr3)) {
                    enc4 = 64;
                }
            }
            output = output + key.charAt(enc1) + key.charAt(enc2) + key.charAt(enc3) + key.charAt(enc4);
        }
        return output;
    }

    function isSecurityPrefSet() {
        var securitySetting = app.preferences.getPrefAsLong("Main Pref Section", "Pref_SCRIPTING_FILE_NETWORK_SECURITY");
        return securitySetting == 1;
    }

    function openURL(url) {
        var winProgramFiles = Folder.commonFiles.parent.fsName;
        var winBrowserCmd = $.os.indexOf("XP") != -1 ? "\"" + winProgramFiles + "\\Internet Explorer\\iexplore.exe\" " : "start ";
        var macBrowserCmdStart = "open \"";
        var macBrowserCmdEnd = "\"";
        if ($.os.indexOf("Windows") != -1) {
            url = url.replace(/&/g, "^&");
            command = "cmd /c \"" + winBrowserCmd + url + "\"";
            system.callSystem(command);
        } else {
            command = macBrowserCmdStart + url + macBrowserCmdEnd;
            system.callSystem(command);
        }
    }

    function parseRegistration(checkReg, mode) {
        if (mode == undefined) {
            mode = "p"
        }
        if (checkReg != "trial") {
            var myReg = checkReg.replace(/_/g, " ");
            var myRegArray = myReg.split("*");
            if (myRegArray.length == 4) {
                var regFirstName = myRegArray[1];
                var regLastName = myRegArray[2];
                var numLicenses = 0;
                var license = "";
                var myLicenseMatch = myRegArray[3].match(/([A-Z]{3})([0-9]+)$/);
                if (myLicenseMatch != null && myLicenseMatch.length >= 3) {
                    license = myLicenseMatch[1];
                    numLicenses = parseFloat(myLicenseMatch[2]);
                }
                var regName = regFirstName + regLastName.match(/^@/) ? "" : " " + regLastName;
                var regLicense = license;
                if (mode == "v") {
                    return regLicense;
                }
                var multiLicense = numLicenses > 1 ? " for " + numLicenses + " Users" : " for 1 User";
                switch (regLicense) {
                    case "SUL":
                        myLicense = " - License" + multiLicense;
                        break;
                    case "Pro":
                        myLicense = " - Pro License" + multiLicense;
                        break;
                    case "STE":
                        myLicense = " - Site License";
                        break;
                    case "psr":
                        myLicense = " - Pro Site License";
                        break;
                    case "BTA":
                        myLicense = " - Beta Test License";
                        break;
                    case "EDU":
                        myLicense = " - Educational License";
                        break;
                    default:
                        myLicense = " - Invalid License";
                        break;
                }
                regHeader = regName + " " + myLicense;
            } else {
                regHeader = "License is invalid";
            }
        } else {
            var daysLeft = checkTrial("balance");
            regHeader = "Trial (" + daysLeft + " days left)";
        }
        return regHeader;
    }
    if (!isSecurityPrefSet()) {
        alert(strErrScriptAccess);
        app.executeCommand(2359);
        if (!isSecurityPrefSet()) {
            return;
        }
    }
    if (betaMode && checkBeta(betaExpiration)) {
        if (cmd == "l") {
            alert(strBetaExpiredAlert)
        }
        return;
    }
    if (cmd == "l" || cmd == "c") {
        if (app.settings.haveSetting(prefsSectionName, prefsName)) {
            myReg = app.settings.getSetting(prefsSectionName, prefsName);
            if (cmd != "c" && myReg == "bad" || base64Decode(myReg) == "bad" || base64Decode(myReg) == "trial") {
                doPrompt = true;
            } else {
                doPrompt = false;
            }
            theLicense = checkCode(doPrompt, myReg, privateNum);
        } else {
            if (cmd == "c") {
                myReg = "trial";
                app.settings.saveSetting(prefsSectionName, prefsName, base64Encode(myReg));
                app.preferences.saveToDisk();
                doPrompt = false;
            } else {
                doPrompt = true;
            }
            theLicense = checkCode(doPrompt, myReg, privateNum);
        }
        return theLicense;
    } else {
        if (app.settings.haveSetting(prefsSectionName, prefsName)) {
            myReg = base64Decode(app.settings.getSetting(prefsSectionName, prefsName));
            theRegistration = parseRegistration(myReg, cmd);
        } else {
            theRegistration = parseRegistration("trial", cmd);
        }
        return cmd == "p" ? strRegistration : "" + cmd == "v" && theRegistration.match("Trial") ? "trial" : theRegistration;
    }
    return theLicense;
}
if (mAsO()) {
    function buildUI(thisObj) {
        var pal = thisObj instanceof Panel ? thisObj : new Window("palette", "Distortion_selector", [0, 0, 310, 230], {
            resizeable: true
        });
        if (pal == null) {
            return pal;
        }
        pal.genBtn = pal.add("button", [10, 10, 130, 30], "Generate Map");
        pal.genBtn.onClick = generate;
        Q1 = pal.add("button", [140, 10, 160, 30], "?");
        Q1.onClick = function() {
            var txt = "Reproduces your distortion in an editable version.\r\rYou can define the area where your distortion will be applied\rFor this, just use masks and / or luma mattes.\r\rYou can use shape, feather, expansion... of the created mask, and add as many masks as you wish.\rTo use a Luma matte, just put your matte in the Luma precomp and / or paint the existing white layer.";
            alert(txt);
        };
        pal.maskBtn = pal.add("button", [10, 40, 130, 60], "Add / Remove Mask");
        pal.maskBtn.onClick = maskBtn_OnClick;
        Q2 = pal.add("button", [140, 40, 160, 60], "?");
        Q2.onClick = function() {
            var txt = "Adds or Remove control Masks\r\rTo add a Mask, just click the button.\rTo remove a Mask, select it then click the button.\rNote : you must keep at least 1 Mask.";
            alert(txt);
        };
        pal.invertBtn = pal.add("button", [10, 70, 130, 90], "Invert Mask / Luma");
        pal.invertBtn.onClick = invertBtn_OnClick;
        Q3 = pal.add("button", [140, 70, 160, 90], "?");
        Q3.onClick = function() {
            var txt = "Inverts selected Mask and / or Luma.";
            alert(txt);
        };
        pal.markBtn = pal.add("button", [10, 100, 130, 120], "Mark / Unmark FX");
        pal.markBtn.onClick = markBtn_OnClick;
        Q4 = pal.add("button", [140, 100, 160, 120], "?");
        Q4.onClick = function() {
            var txt = "Adds / Removes marks on selected Effects.\r\rMarked Effects won't be affected by Masks and Luma.\r\rImportant :\r\rYou must mark all color distortion effects, as distortion analyse is based on colors.";
            alert(txt);
        };
        pal.restoreBtn = pal.add("button", [170, 130, 290, 150], "Restore FX");
        pal.restoreBtn.onClick = restoreBtn_OnClick;
        pal.matteBtn = pal.add("button", [10, 130, 130, 150], "Show / Hide Matte");
        pal.matteBtn.onClick = matteBtn_OnClick;
        Q5 = pal.add("button", [140, 130, 160, 150], "?");
        Q5.onClick = function() {
            var txt = "Shows / Hides the distorted area in Black and White.\r\rDistorted area is in white, undistorted in black.\rThe area is the product of Masks AND Luma.";
            alert(txt);
        };
        var myBinary = "‰PNG\r\n\n\rIHDR€€Ã>aË\tpHYs8\"ô@$zTXtCreatorxœsLÉOJUpL+I-RpMKKM.)AzÎçÍsfZIDATxœí{pÕžÇ?'3y D ‰ˆB™€DÝÄ äéÅu¹ ¼.+PPR\\ÅŠ·.»7°aX„,´/QAAŠGÐl$BÔKDÐ@J™dƒ‚¥¡™ððªâX0*¸8Zöó9´œV½¿¹\rüx'ÐOu)e_àCàá@ÖÛ‚8¼(„ø)P†¢)eˆ”r*J¯™i|÷#¥|¥/Ü4¾ïÄ{çÔpw)åH`+­¿G/Ü\rluœ[C1ô ¥lÂ|¾÷·ç
¹Fh˜H)Ÿ¶mŒ*ÓÄ%·€ñBˆFfˆH)>G‰µ3ñ?åÀSBˆï}-ÈgRöö1¾–e¢‹ MQàK!>9€”2e0#É—rL¼æ0HQâm^?H)Àõ˜Æ&IÀz‡-¼Â—ÇÀ·€a>obÃPlá^ݏ{Ÿ Á$Ôc„[õ¨Û¤”÷?`6úšÅ@Š¢HÏAº~ÁŽ!ÊU˜ÆoŽÄ«ô#뽄gÏèþøcrrršœt=P÷ŠŠŠbذaŒ9’ÈÈHMß°¬¬Œœœ6mÚDUU•Çíéó˜˜ÆŒÃ Aƒ°X,º4lܸѥ-ÐXÃØ±cuipÃf!Äóuoœ·Ç#Âã¾”|îÜ9æÎË‘#GœÂ}¥ªªŠ;w’——ÇäÉ“éÝ»·êþûöícÁ‚\\ºtÉy2}åÚµk¬]»–C‡‘™™ILŒzLì¾}û˜?>—.]r3ÐTx\\J)êÆêß\\º}9räH            
关注
打赏
1665481431
查看更多评论
0.0469s