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文档中的名称命名