javascript中的Photoshop UI单选按钮

Posted

技术标签:

【中文标题】javascript中的Photoshop UI单选按钮【英文标题】:Photoshop UI Radio buttons in javascript 【发布时间】:2012-11-04 01:28:30 【问题描述】:

在实现单选按钮时遇到问题。我知道 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:Buttonbounds:[110,130,190,150] , text:'Cancel' ,"+
"processBTN:Buttonbounds:[10,130,90,150] , text:'Ok' ";
var win = new Window(dlg,"radio buttons"); 
win.radiobutton0.value = true;
win.center(); 
win.show();

另一件事:有没有更好的方式来编写 UI 元素,因为这种格式相当丑陋。

以下是有效的基本代码。 var 对话框 = “对话框方向:'列',alignChildren:'中心',\ 信息:组方向:“列”,alignChildren:“中心”,\ rbtn1: RadioButton text: 'Radio Button 1', align: 'left', \ rbtn2: RadioButton text: 'Radio Button 2', align: 'left', , , \ ";

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

我认为单选按钮切换由第 3 行控制,因为注释掉它会阻止单选按钮正常工作。

【问题讨论】:

【参考方案1】:

当我运行代码时,它在这一行抛出了一个错误win.radiobutton0.value = true; Object is undefined。这是因为对话框结构按钮的方式是窗口内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 ();

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

【讨论】:

您提供的脚本不会切换单选按钮;这是我所希望的。 我没有在问题中看到这一点。你说的切换是什么意思?单选按钮的默认行为(选择一个关闭所有其他按钮)应自动应用于同一分组中的所有按钮。你有别的想法吗? 抱歉,我认为这很明显。我在最初的问题中添加了另一个代码示例。 您是否尝试默认打开一个按钮?这就是您在使用win.radiobutton0.value = true; 时遇到的问题吗? 注意:如果您的单选按钮不相邻,例如,假设您在它们之间放置一条线,那么它们将成为不同组的一部分。例如,当您这样做时,您将一次选择两个单选按钮。至少在我的脚本中它是这样工作的。我正在寻找一种将所有单选按钮从同一组中分离出来但删除“中间”元素的方法。【参考方案2】:

这是一个更好的附加版本的对话框,其中单选按钮按我想要的方式工作。

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

【讨论】:

以上是关于javascript中的Photoshop UI单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

Photoshop Javascript 获取活动文档中的所有图层

css 动态背景 - 将Javascript放在页脚和CSS中。确保所有图像文件都以Photoshop文档中的名称命名

css 动态背景 - 将Javascript放在页脚和CSS中。确保所有图像文件都以Photoshop文档中的名称命名

css 动态背景 - 将Javascript放在页脚和CSS中。确保所有图像文件都以Photoshop文档中的名称命名

css 动态背景 - 将Javascript放在页脚和CSS中。确保所有图像文件都以Photoshop文档中的名称命名

JavaScript中的线程与进程