Фотошоп 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 ();

Это самая полная ссылка на ScriptUI, которую я нашел.

Вот более приятная аддитивная версия диалогового окна с переключателями, работающими так, как я хочу.

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
}
Другие вопросы по тегам