JavaScript中的Photoshop UI单选按钮

问题描述 投票:3回答:2

实现单选按钮时遇到问题。我知道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();

另一件事:是否有更好的方式编写UI元素,因为这种格式很难看。

这是有效的基本代码。var dialogBox =“对话框{方向:“列”,alignChildren:“中心”,\信息:组{方向:“列”,alignChildren:“中心”,\rbtn1:RadioButton {文本:“ Radio Button 1”,对齐:“ left”},\rbtn2:RadioButton {文本:'Radio Button 2',align:'left'},},},\}}“;

win = new Window (dialogBox);
win.center(); 
win.show();

我认为单选按钮的切换受第3行控制,因为注释掉会使单选按钮正常工作。

photoshop-script adobe-scriptui
2个回答
3
投票

当我运行代码时,它在此行上引发了错误win.radiobutton0.value = true;对象未定义。这是因为使对话框结构化的方法是窗口内info组的一部分。该行应显示为

win.info.radiobutton0.value = true;

最初应该将单选按钮0切换为打开。

如果不需要,您不必使用资源字符串即可制作对话框。可以通过创建对窗口对象(或调色板或面板)的引用并使用.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 ();

This is the most thorough reference on ScriptUI that I've found.


0
投票

这是一个对话框的更好的加法版本,其中单选按钮可以按我希望的方式工作。

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
}
© www.soinside.com 2019 - 2024. All rights reserved.