Фотошоп javascript; как звонить по радио кнопкам
У меня возникли проблемы с выяснением того, как вызывать выбранную радиокнопку. Есть примеры, но они, похоже, не работают с тем, что я пытаюсь сделать.
Мой скрипт берет файл шаблона psd, открывает его и меняет некоторые текстовые слои в зависимости от выбора пользователя.
Я пытаюсь использовать switch() для переключателей, но у меня есть имя кнопки в качестве переменной x. Когда я запускаю скрипт, он дает мне x не определено. Я понимаю, что это означает, что мне нужно определить x перед моим switch(), но я не уверен, как это сделать, когда переменная должна соответствовать моему случаю.
Вот то, что я пытаюсь использовать для переключателя.
switch (x.value=true){
case 'var x = dlg.pnl_projScheme.rdo_sn1':
app.activeDocument.layers.getByName("SCHEME").textItem.contents = ('dlg.pnl_projScheme.rdo_sn1.text');
break;
case 'var x = dlg.pnl_projScheme.rdo_sn2':
app.activeDocument.layers.getByName("SCHEME").textItem.contents = ('dlg.pnl_projScheme.rdo_sn2.text');
break;
case 'var x = dlg.pnl_projScheme.rdo_sn3':
app.activeDocument.layers.getByName("SCHEME").textItem.contents = ('dlg.pnl_projScheme.rdo_sn3.text');
break;
case 'var x = dlg.pnl_projScheme.rdo_snNone':
app.activeDocument.layers.getByName("SCHEME").textItem.contents = ('');
break;
}
Вот мое диалоговое окно:
var dlg = new Window('dialog', 'PSD Creator', [100, 100, 500, 550] );
dlg.pnl_browse = dlg.add('panel', [10, 10, 390, 150], 'Browse');
dlg.pnl_browse.txt_staticPSD = dlg.pnl_browse.add('statictext' , [15, 10, 375, 30],'Select the project images folder:');
dlg.pnl_browse.btn_browsePSD = dlg.pnl_browse.add ('button', [15, 35, 60, 60], '...');
dlg.pnl_browse.txt_editPSD = dlg.pnl_browse.add('edittext' , [65, 35, 365, 55],'<Select the project images folder>');
dlg.pnl_browse.txt_staticTIFF = dlg.pnl_browse.add('statictext' , [15, 70, 375, 90],'Select the folder where you TIFF images are:');
dlg.pnl_browse.btn_browseTIFF = dlg.pnl_browse.add ('button', [15, 95, 60, 120], '...');
dlg.pnl_browse.txt_editTIFF = dlg.pnl_browse.add('edittext' , [65, 95, 365, 120],'<Select the folder where you TIFF images are>');
dlg.pnl_projScheme = dlg.add('panel', [10,240,390,310], 'Details');
dlg.pnl_projScheme.txt_sn = dlg.pnl_projScheme.add('statictext' , [15,10,375,30],'Scheme:');
dlg.pnl_projScheme.rdo_snNone = dlg.pnl_projScheme.add('radiobutton' , [15,30,90,50],'None');
dlg.pnl_projScheme.rdo_sn1 = dlg.pnl_projScheme.add('radiobutton' , [100,30,180,50],'Scheme 1');
dlg.pnl_projScheme.rdo_sn2 = dlg.pnl_projScheme.add('radiobutton' , [190,30,270,50],'Scheme 2');
dlg.pnl_projScheme.rdo_sn3 = dlg.pnl_projScheme.add('radiobutton' , [280,30,360,50],'Scheme 3');
dlg.pnl_projScheme.rdo_snNone.value = true;
dlg.pnl_projOpt = dlg.add('panel', [10,320,390,390], 'Options');
dlg.pnl_projOpt.txt_sn = dlg.pnl_projOpt.add('statictext' , [15,10,375,30],'Option:');
dlg.pnl_projOpt.rdo_onNone = dlg.pnl_projOpt.add('radiobutton' , [15,30,90,50],'None:');
dlg.pnl_projOpt.rdo_on1 = dlg.pnl_projOpt.add('radiobutton' , [100,30,180,50],'Option 1:');
dlg.pnl_projOpt.rdo_on2 = dlg.pnl_projOpt.add('radiobutton' , [190,30,270,50],'Option 2:');
dlg.pnl_projOpt.rdo_on3 = dlg.pnl_projOpt.add('radiobutton' , [280,30,360,50],'Option 3:');
dlg.pnl_projOpt.rdo_onNone.value = true;
dlg.btn_ok = dlg.add ('button', [70,400,190,430], 'ok');
dlg.btn_cancel = dlg.add ('button', [210,400,320,430], 'cancel');
////////////////////////////
dlg.pnl_browse.btn_browsePSD.onClick = function () {
selectFilePSD = File.openDialog("Please select your template file.","*.psd");
if(selectFilePSD != null) dlg.pnl_browse.txt_editPSD.text = decodeURI(selectFilePSD.fsName);
}
dlg.pnl_browse.btn_browseTIFF.onClick = function () {
selectFileTIFF = File.openDialog("Please select your tiff images.","*.TIF; *TFF", true);
if(selectFileTIFF != null) dlg.pnl_browse.txt_editTIFF.text = decodeURI(selectFileTIFF.fsName);
}
dlg.btn_ok.onClick = function () {
selectFolderPSDs = Folder.selectDialog("Where do you want to save your PSDs?");
if(selectFolderPSDs != null) imageLocation = decodeURI(selectFolderPSDs.fsName);
dlg.close()
open (selectFilePSD);
if (dlg.pnl_projScheme.rdo_snNone.value = true) {
var r = "";
alert("");
}
if (dlg.pnl_projScheme.rdo_sn1.value = true) {
var r = dlg.pnl_projScheme.rdo_sn1.text;
alert(dlg.pnl_projScheme.rdo_sn1.text);
}
if(dlg.pnl_projScheme.rdo_sn2.value = true) {
var r = dlg.pnl_projScheme.rdo_sn2.text;
alert(dlg.pnl_projScheme.rdo_sn2.text);
}
if (dlg.pnl_projScheme.rdo_sn3.value = true) {
var r = dlg.pnl_projScheme.rdo_sn3.text;
alert(dlg.pnl_projScheme.rdo_sn3.text);
}
}
///////////////////////////
dlg.center();
dlg.show();
1 ответ
Вы только что допустили опечатку в if (dlg.pnl_projScheme.rdo_snNone.value = true)
, так должно бытьif (dlg.pnl_projScheme.rdo_snNone.value == true)
с двойным '=='
Я думаю, что я понял это, кажется, работает.
switch(true) {
case dlg.pnl_projScheme.children[1].value:
app.activeDocument.layers.getByName("SCHEME").textItem.contents = (' ');
break;
case dlg.pnl_projScheme.children[2].value:
app.activeDocument.layers.getByName("SCHEME").textItem.contents = ('Scheme 1');
break;
case dlg.pnl_projScheme.children[3].value:
app.activeDocument.layers.getByName("SCHEME").textItem.contents = ('Scheme 2');
break;
case dlg.pnl_projScheme.children[4].value:
app.activeDocument.layers.getByName("SCHEME").textItem.contents = ('Scheme 3');
break;
default:
app.activeDocument.layers.getByName("SCHEME").textItem.contents = (' --- ');
}