Javascript 从草图中预定义的阴影在对象上实现阴影
我不擅长javascript,但我想从预定义的阴影在对象上实现阴影,但代码不起作用:Javascript 从草图中预定义的阴影在对象上实现阴影,javascript,plugins,sketchapp,sketch-3,Javascript,Plugins,Sketchapp,Sketch 3,我不擅长javascript,但我想从预定义的阴影在对象上实现阴影,但代码不起作用: var selection = context.selection; for (var i=0; i < selection.count(); i++){ var layer = selection.objectAtIndex(i) if (layer.isEmpty) UI.message('No layers selected!');
var selection = context.selection;
for (var i=0; i < selection.count(); i++){
var layer = selection.objectAtIndex(i)
if (layer.isEmpty) UI.message('No layers selected!');
else {
var sha_0 = [];
var sha_1 = [
color: '#00000024',
x: 0,
y: 1,
blur: 1,
spread: 0
]
var sha_2 = [
color: '#00036024',
x: 0,
y: 1,
blur: 1,
spread: 0
]
var options = ['0dp', '1dp', '2dp'];
var selectDialog = sketch.UI.getSelectionFromUser("Please select shadow depth:", options);
if (selected == 0) {
layer.forEach(function (e) {
e.style.shadows = sha_0;
});
} else if (selected == 1) {
layer.forEach(function (e) {
e.style.shadows = sha_1;
});
} else if (selected == 2) {
layer.forEach(function (e) {
e.style.shadows = sha_2;
});
}
}
}
var selection=context.selection;
对于(var i=0;i
您需要调用属于UI库的方法是异步的。它们依赖于用户在代码继续之前执行某些操作。在Javascript中,这需要回调函数或使用async
/wait
和promissions。您正在使用的特定方法:sketch.UI.getSelectionFromUser
被删除,以支持新的UI.getInputFromUser
方法
例如:
UI.getInputFromUser(
“你最喜欢的设计工具是什么?”,
{
类型:UI.INPUT\u type.selection,
可能值:[“草图”、“图纸”],
},
(错误,值)=>{
如果(错误){
//很可能是用户取消了输入
返回
}
}
)
因此,您的代码将如下所示:
//通过每个文档的文档对象选择的层
var selection=document.selectedLayers;
//直接在选择层上迭代
selection.forEach(层=>{
//这些阴影是对象,而不是数组,因此将[]更改为{}
var sha_0=[];
var sha_1=[{
颜色:'#00000024',
x:0,,
y:1,,
模糊:1,,
价差:0
}]
var sha_2=[{
颜色:'#00036024',
x:0,,
y:1,,
模糊:1,,
价差:0
}]
变量选项=['0dp'、'1dp'、'2dp'];
//使用更新的getInputFromUser方法
UI.getInputFromUser(
“请选择阴影深度:”,
{
类型:UI.INPUT\u type.selection,
可能值:选项,
},
(错误,值)=>{
如果(错误){
//很可能是用户取消了输入
返回
}
开关(值){
案例选项[0]:
layer.style.shadows=sha_0;
打破
案例选项[1]:
layer.style.shadows=sha_1;
打破
案例选项[2]:
layer.style.shadows=sha_2;
打破
}
}
)
})
您的代码可能会简化得更多,但这应该会让您重新开始工作。我不确定您的代码的其余部分是什么样的,但您需要为此段导入适当的库:
var document=require('sketch/dom')。getSelectedDocument()
和var UI=require('sketch/UI')
,谢谢你的帮助,但是我们需要根据文档添加括号“[”而不是“{”。在这之后,代码工作得非常好