这些命令中的每一个实际上都是作为一个JavaScript函数实现的(我们称之为处理程序),位于该包中的脚本文件中。
每个脚本可以包含尽可能多的处理程序,并且每个命令都可以由不同的处理程序实现,因此,无论您是按照每个命令安排一个脚本,还是将所有命令处理程序放在单个脚本文件中,都由您决定。
因此,要了解如何制作插件,首先需要了解如何编写Sketch脚本。
教你如何编写JavaScript代码超出了这些页面的范围,所以我们假设你已经知道了这一点。如果没有,互联网上有很多好的学习资源!
Sketch中的脚本使用CocoaScript编写。
这是一个桥梁,可让您编写可调用本机Objective-C / Cocoa的JavaScript脚本。
使用它,你可以用JavaScript编写你的插件的逻辑,但是当你想让它做某事时,可以调用实现Sketch的实际类和方法。
基础如下:
(有关更多详细信息,请参阅更多关于CocoaScript页面。)
当您的脚本被Sketch调用时,您会传递一些上下文,包括表示当前Sketch文档和选择的Objective-C对象。
然后,您可以读取属性,执行计算并调用这些对象的方法,以完成脚本的目的。
当用户选择插件菜单命令时,Sketch会查找要调用的处理程序(CocoaScript函数)以及调用它的脚本文件。
当处理程序被调用时,它会传递一个上下文变量。这包含一些重要的属性,您可以使用它们访问您需要的对象。
例如,selection属性为您提供当前文档中选定图层的列表:
var onRun = function(context) {
var selection = context.selection
for (var i = 0; i < selection.count(); i++) {
var layer = selection[i]
log('layer ' + layer.name + ' is selected.')
}
}
Sketch中的所有插件都可以访问以下默认变量:
MSPluginCommand
表示当前正在执行的脚本命令的对象MSDocument
代表当前文档的对象MSPluginBundle
表示包含当前正在执行的脚本的插件包的对象NSString
包含当前正在执行的脚本的完整路径NSArray
当前文档中选择的一个或多个图层; 这个数组中的每一项都是一个MSLayer
对象尝试简单脚本的最简单方法是通过插件>自定义插件...菜单项。
这给你一个文本字段,你可以输入你的脚本。
点击运行按钮将执行脚本并在下面板显示任何输出或错误。
您可以使用此界面进行探索和实验。
一旦你有一个你想要开发成适当的插件的脚本,你可以使用Run Custom Script ...表单中的Save ...按钮。
这将创建一个Plugin文件夹(称为Plugin Bundle)并将脚本保存到其中。
生成的插件将具有单个命令和单个脚本文件。执行该命令将调用onRun
脚本中的函数,该函数将包含您输入的代码。
从这个起点开始,您可以通过直接编辑文件夹中的文件来扩展您的插件。
你可以添加更多的代码到你的onRun
函数,添加更多的功能,甚至更多的脚本文件。
通过编辑manifest.json
插件文件夹中的文件,您可以自定义命令的名称,输入描述,甚至可以展开插件以定义多个命令。
有关更多信息,请参阅插件包。
原文:https://developer.sketchapp.com/guides/plugin-scripts/