我正在为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;
任何想法如何解决这个问题?
距您提出此要求已经有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似乎“ \ s +”在ExtendScript中不起作用,所以我正在使用“ / [\ r \ n]”:What is the meaning of (/^\s+|\s+$/gm) in JavaScript?