Фотошоп UI Радио кнопки в JavaScript
Возникли проблемы с реализацией переключателей. Я знаю, что переключатели в CS2 могут быть проблематичными, но я не уверен, в чем я ошибаюсь. Я подозреваю, что в неправильном месте есть скобка или запятая; но не вижу этого Спасибо.
var dlg =
"dialog {text:'Script Interface',bounds:[100,100,300,260]," +
"info: Group { orientation: 'column', alignChildren: 'center'," +
"radiobutton0:RadioButton {bounds:[50,30,150,40] , text:'layerName0', alignment: 'left' }," +
"radiobutton1:RadioButton {bounds:[50,50,150,90] , text:'layerName1', alignment: 'left' }}" +
"cancelBTN:Button{bounds:[110,130,190,150] , text:'Cancel' },"+
"processBTN:Button{bounds:[10,130,90,150] , text:'Ok' }}";
var win = new Window(dlg,"radio buttons");
win.radiobutton0.value = true;
win.center();
win.show();
Другое дело: есть ли лучший способ написания элементов пользовательского интерфейса, так как этот формат довольно уродливый.
Вот простой код, который работает. var dialogBox = "dialog {ориентация:" столбец ", alignChildren:" центр ", \ info: группа {ориентация:" столбец ", alignChildren:" центр ", \ rbtn1: RadioButton {текст:" переключатель 1 ", выравнивание: 'left'}, \ rbtn2: RadioButton { text: 'Radio Button 2', выровнять: 'left'}, }, }, \ } }";
win = new Window (dialogBox);
win.center();
win.show();
Я думаю, что переключателем переключателя управляет строка 3, поскольку комментирование этого переключателя останавливает работу переключателей правильно.
2 ответа
Когда я запустил код, он выдал ошибку в этой строке win.radiobutton0.value = true;
Объект не определен. Это потому, что способ, которым у вас есть структурированное диалоговое окно, кнопка является частью info
группа в окне. Строка должна читать
win.info.radiobutton0.value = true;
Это должно сначала включить radiobutton0.
Вам не нужно использовать строку ресурса для создания диалогов, если вы не хотите. Отдельные элементы можно добавить, создав ссылку на объект окна (или на панель или панель) и используя .add()
Например:
var w = new Window ("dialog");
w.alignChildren = "left";
var radio1 = w.add ("radiobutton", undefined, "Radio Button 1");
var radio2 = w.add ("radiobutton", undefined, "Radio Button 2");
radio1.value = true;
w.show ();
Вот более приятная аддитивная версия диалогового окна с переключателями, работающими так, как я хочу.
var w = new Window ("dialog");
w.alignChildren = "left";
var myButtonGroup = w.add ("group");
myButtonGroup.orientation = "column";
myButtonGroup.alignment = "left";
var radio1 = myButtonGroup.add ("radiobutton", undefined, "Radio Button 1");
var radio2 = myButtonGroup.add ("radiobutton", undefined, "Radio Button 2");
myButtonGroup.add ("button", undefined, "OK");
myButtonGroup.add ("button", undefined, "Cancel");
radio1.value = true;
w.center();
// w.show ();
if (w.show() == 1)
{
alert("You picked " + youSelected(myButtonGroup))
}
function youSelected(rButtons)
{
if (radio1.value == true)
// radio1 selected
return radio1.text
else
// radio2 selected
return radio2.text
}