Photoshop -从嵌套函数中停止脚本



我有一个问题,也许你能帮我澄清一下。
我正在更新一个旧的脚本与ScriptUI谁有一个按钮的菜单(这只是一个例子,最后的脚本将有更多的按钮)。
有人建议我把菜单放在一个函数中,使用"return"在不满足某些条件时停止脚本(显然是"exit")在photoshop中不起作用)。
当按钮被按下时,它应该激活一个控制函数(CheckFunction),在出现问题的情况下停止一切(我选择将控件放在函数中以避免不必要的重复,因为将有几个具有相同控件的按钮)。
不知道外部函数是否可以从函数内部调用(我刚开始做简单的脚本,我知道的不多),我嵌套了函数。
现在的问题是,按钮调用多个连续的函数(我不认为这是可以避免的),并使用返回的第一个(控制一个),它停止控制功能,但不是称为生成各种错误的功能的其余部分。
是否有可能停止其他功能,或者我必须以其他方式编写脚本?
为了清晰起见,我给出了一个菜单的示例。

function Menu() {
if (documents.length == 0) {
alert ("Open a file first");
return;
}
// here goes the dialog window with the button I will call button1
button1.onClick = function() {
CheckFunction();
Function2();
Function3();
}
function CheckFunction() {
if (condition is not met) {
alert ("Condition not met");
return;
}
}
// here goes the other functions
DialogWindow.show ();
}
Menu();

一旦在CheckFunction()中使用return不会停止Function2和Function3,它们被称为创建错误。
如果我需要重新安排整个脚本,我会很乐意这样做,因为脚本不是我的强项套件。你有什么解决办法/建议给我吗?

你现在可能已经明白了,但我将回答其他人可能遇到的问题。

返回时,它只是停止/退出当前函数,而不是整个脚本。因此,要使脚本停止,您需要从主脚本函数返回,而不是从嵌套函数返回(在您的示例中是CheckFunction()),甚至是按钮单击函数返回。

你可能需要调整一下你的逻辑。基本上,你的Function2Function3应该只在CheckFunction通过时运行。这意味着,点击按钮的唯一目的是检查一些东西。如果选中OK,则可以运行Function2和Function3。如果检查不OK,停止脚本。

对于你的代码,我建议从CheckFunction返回一些东西,然后从你的按钮点击返回一些东西,并使用按钮点击函数返回值来检查是否应该运行进一步的函数。

像这样:

...
var continue = true; //control variable
button1.onClick = function() {
var check = CheckFunction();

if (!check) { //if false
continue = false;
}
}
if (continue) {

// here goes the other functions
Function2();
Function3();
}   

//check function
function CheckFunction() {
if (condition is not met) {
alert ("Condition not met");
return false;
}
}
...

相关内容

  • 没有找到相关文章

最新更新