Photoshop脚本换行

3
我正在为Photoshop编写一个脚本,用户可以在脚本面板中输入一些文本进行更改。
问题在于,当用户按下“回车”键创建新行时,输出会显示一个“缺失字符”的标志而不是换行符。
topRow.add ("statictext", undefined, "Text layer contents:");
var myText = topRow.add ("edittext", undefined, undefined, {name: 'myText', multiline: true});
    myText.characters = 20;
    myText.preferredSize = [150,60];
    myText.active = true;

有什么解决这个问题的想法吗?

我被难住了。我知道它在 CS3 中有所改变。更糟糕的是,如果您添加一个“确定”和一个“取消”按钮,它会自动选择“确定”按钮,而不是添加换行符。 - Mr Mystery Guest
1个回答

2

虽然你已经提出这个问题2.5年了,但我通过搜索相同的问题找到了你的问题。以下是我解决这个问题的方法,希望能帮助其他寻找答案的人:

如果您将所有可能的换行符替换为默认回车符("\r"),则在PSCC20中它可以完美地工作。以下是一个可工作的演示脚本:


w = new Window('dialog {text:"Title"}');

var inputText1 = w.add("edittext", [0,0,250,60], "Text 1", {multiline: true, wantReturn: true}); //multiline, uses return for line breaks instead of CTRL-return

var button = w.add('button {text:"Change"}');
button.onClick = function (){
            dummy = app.activeDocument.artLayers.getByName("Text");
            if(dummy.kind == LayerKind.TEXT){
            theText = inputText1.text.replace( /[\r\n]+/gm, "\r" ); 
            dummy.textItem.contents = theText;  
            w.close();
            }
    }

w.center();
w.show();

PS:在ExtendScript中似乎"\s+"无法使用,所以我使用"/[\r\n]"代替:

什么是JavaScript中的(/^\s+|\s+$/gm)的含义?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接