Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从草图中预定义的阴影在对象上实现阴影_Javascript_Plugins_Sketchapp_Sketch 3 - Fatal编程技术网

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!');

我不擅长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!');
           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')
,谢谢你的帮助,但是我们需要根据文档添加括号“[”而不是“{”。在这之后,代码工作得非常好