2015-01-19 1 views
-1

Действительно ли это так сложно? Неужели мой google-fu тупой? Как я могу сделать кнопку отмены, которая отменяет выполнение остальной части скрипта?Adobe ESTK Отмена кнопки, которая действительно отменяет

Мой сценарий немой. Я не очень хороший кодер, я знаю это, но вот что у меня есть:

Я автоматизирую INDD CScloud. Сценарий сначала открывает окно, оператор имеет опции в качестве переключателей. внизу есть стандартные кнопки «ОК» и «Отмена», тогда сценарий имеет некоторые функции, которые делают вещи на основе параметров, отображаемых в окне. То, что я хочу сделать, это ALL CODE EXECUTION to STOP, когда я нажимаю кнопку «Canel». Это оно! ничего особенного! но все, что ему кажется, это закрыть диалоговое окно и продолжить без регистрации изменений. GRRR.

вот мой дерьмовый код:

var asker = new Window ("dialog","Answer Some Stuff!"); 
    var firstselector = asker.add ("panel", undefined, "Which Thing First?") 
     firstselector.alignChildren = "left" 
     firstselector.preferredSize = [250,100] 
     thing1a = typeselector.add ("radiobutton", undefined, "Thing 1a") 
     thing2a = typeselector.add ("radiobutton", undefined, "Thing 2a") 
     thing3a = typeselector.add ("radiobutton", undefined, "Thing 3a") 
     thing1a.value = true; 
    var secondselector = asker.add ("panel", undefined, "Which Thing Second?") 
     secondselector.alignChildren = "left" 
     secondselector.preferredSize = [250,100] 
     thing1b = secondselector.add ("radiobutton", undefined, "Thing 1b") 
     thing2b = secondselector.add ("radiobutton", undefined, "Thing 2b") 
     thing3b = secondselector.add ("radiobutton", undefined, "Thing 3b") 
     thing1b.value = true; 
    var thirdselector = asker.add ("panel", undefined, "Do Thing Three?") 
     thirdselector.alignChildren = "left" 
     thirdelector.preferredSize = [250,75] 
     certyes = thirdselector.add ("radiobutton", undefined, "Yes") 
     thidno = thirdselector.add ("radiobutton", undefined, "No") 
     thirdyes.value = true; 
       asker.add ("button", undefined, "Do It!", {name: "ok"}); 
       asker.add ("button", undefined, "Cancel", {name: "cancel"});  
asker.show(); 

var mainPart = function(){ 
if (thing1a.value == true && thing1b.value == true) 
{ 
do some stuff 
} 
if (thing2a.value == true && thing1b.value == true) 
{ 
do some different stuff 
} 
})(); 
var secondPart = function(){ 
if (thing3.value == true && thing1b.value == true) 
{ 
do this other stuff 
} 
if (thing3.value == true && thing2b.value == true) 
{ 
do some other stuff entirely 
} 
alert("All The Stuff Is Done!"); 
} 
)(); 

Все, что я хочу, чтобы это произошло, что, когда оператор нажимает на кнопку «Отмена» завершает работу сценария и mainPart и secondPart не выполняются.

Я попытался с помощью .onClick, как это:

var cancelBtn = asker.add('button',undefined,'Cancel'); 
cancelBtn.preferredSize.width = 175; 
cancelBtn.onClick=function(){ 
    exit(); 
} 

, но, по-видимому exit() не является действительным, и код просто продолжает идти ... так что я пытался break, то его ошибки о «незаконном использовании перерыва за пределами петля ", но затем продолжал выполнять остальную часть кода в любом случае ...

Помогите мне быть глупым, пожалуйста.

ответ

1

Ах, ты заставил меня смеяться с твоими самоуничижениями.

Я избавился от третьей части вашего кода (чтобы упростить и прекратить получение ошибок), и исправил тип-o («тиредектор» вместо «thirdselector»). Кроме того, чтобы получить работу, я изменил ссылку «typeelector» на «firstselector» в первой части. Я записал строки «сделать некоторые вещи». Затем я добавил то, что я обычно использую, чтобы получить функцию отмены в моих скриптах («this.parent.close()»)

Вот мой бегущий скрипт, который вы можете использовать, чтобы добраться туда, где хотите.

[EDIT - Я добавил материал, чтобы продемонстрировать, как правильно передавать данные. Обратите внимание, что исходный вопрос о кнопке отмены уже был дан. . Изучите это, и вы должны быть в состоянии подобрать основные, но мощные идеи от него]

var asker = new Window ("dialog","Answer Some Stuff!"); 
    var firstselector = asker.add ("panel", undefined, "Which Thing First?") 
     firstselector.alignChildren = "left" 
     firstselector.preferredSize = [250,100] 
     thing1a = firstselector.add ("radiobutton", undefined, "Thing 1a") 
     thing2a = firstselector.add ("radiobutton", undefined, "Thing 2a") 
     thing3a = firstselector.add ("radiobutton", undefined, "Thing 3a") 
     thing1a.value = true; 
    var secondselector = asker.add ("panel", undefined, "Which Thing Second?") 
     secondselector.alignChildren = "left" 
     secondselector.preferredSize = [250,100] 
     thing1b = secondselector.add ("radiobutton", undefined, "Thing 1b") 
     thing2b = secondselector.add ("radiobutton", undefined, "Thing 2b") 
     thing3b = secondselector.add ("radiobutton", undefined, "Thing 3b") 
     thing1b.value = true; 

    var cancelBtn = asker.add('button',undefined,'Cancel'); 
    var okBtn = asker.add('button',undefined,'OK'); 
    cancelBtn.preferredSize.width = 175; 

okBtn.onClick=function(){ 
    mainPart(); 
    this.parent.close(); 
} 
cancelBtn.onClick=function(){ 
    this.parent.close(); 
} 

asker.show(); 

var mainPart = function(){ 

if (thing1a.value == true && thing1b.value == true) 
{ 
alert('1a and 1b'); 

} else if (thing2a.value == true && thing1b.value == true) { 
    alert('2a and 1b'); 
} else { 
    alert('something else'); 
//do some different stuff 
} 
} 
+0

Спасибо, я думаю, если я не могу быть хорошим программистом, я должен, по крайней мере, быть интересным;) На печальной ноте это не работает:/ – JawzX

+0

, если я делаю код 'var mainPart = function() {alert (" It Worked! ");}' предупреждение не появляется с помощью кнопки отмены или стандартной кнопки «ОК». Если я изменю его на «var mainPart = (function() {alert (« It Worked! »);})();' Код запускается, и появляется предупреждение, независимо от того, какая кнопка нажата ... что означает, что он не отменяет Выполнение ... Есть ли что-то фундаментальное, что мне не хватает в выполнении javascript? – JawzX

+0

См. Редактирование в сообщении. вы можете организовать сценарий двумя способами (просто поместите): 1) диалог «один выстрел» (см. пример) или 2) «на лету», где сценарий остается открытым, и вы продолжаете делать что-то. Смотрите мои примеры после эффектов на crgreen.com – CRGreen