前言
sketch是一款輕量抗碰、易用的矢量設計工具,很多UI設計師已經在使用這款工具來進行設計饱溢。同時sketch也開放了API供開發(fā)者們進行插件開發(fā)。我們這個課程就是來學習如何開發(fā)sketch 插件窟她。
插件的結構
插件是一個或多個腳本的集合。每個腳本都定義了一個或多個方法來擴展Sketch的命令蔼水。我們可以看到它是一個以.sketchplugin為擴展名的文件夾震糖,包含文件和子文件夾,右鍵--選擇查看包內容趴腋,可以看到以下結構:
mrwalker.sketchplugin
Contents/
Sketch/
manifest.json
shared.js
Select Circles.cocoascript
Select Rectangles.cocoascript
Resources/
Screenshot.png
Icon.png
(一)Resources
用來放icon圖片等資源吊说。
(二)manifest.json
這是一個json文件,它包含了名稱优炬,描述和作者姓名等信息颁井。定義了插件的命令名稱、在sketch顯示的菜單選項等穿剖。
比如:
{
"name": "Select Shapes",
"description": "Plugins to select and deselect shapes",
"author": "Joe Bloggs",
"homepage": "https://github.com/example/sketchplugins",
"version": "1.0",
"identifier": "com.example.sketch.shape-plugins",
"appcast": "https://excellent.sketchplugin.com/excellent-plugin-appcast.xml",
"compatibleVersion": "3",
"bundleVersion": 1,
"commands": [
{
"name": "All",
"identifier": "all",
"shortcut": "ctrl shift a",
"script": "shared.js",
"handler": "selectAll"
},
{
"name": "Circles",
"identifier": "circles",
"script": "Select Circles.cocoascript"
},
{
"name": "Rectangles",
"identifier": "rectangles",
"script": "Select Rectangles.cocoascript"
}
],
"menu": {
"items": ["all", "circles", "rectangles"]
}
}
有關插件的信息
1.name
插件的名稱
2.description
插件的描述
3.author
插件的作者
4.version
插件版本號
5.identifier
指定插件的唯一標識符蚤蔓。Sketch在內部使用此字符串來跟蹤插件卦溢,為其存儲設置等糊余。官方鼓勵使用反向域語法,如com.example.sketch.shape-plugins单寂。
commands
是一個數(shù)組贬芥,定義用戶執(zhí)行的一個或多個命令。定義的每項命令具有以下屬性:
1.name
命令的顯示名稱宣决。此值在插件菜單中使用蘸劈。
2.identifier
一個字符串,指定命令的唯一標識符尊沸。這用于將命令映射到操作威沫,而不論命令名稱如何更改。
3.shortcut
一個可選的字符串洼专,用于指定該命令的快捷鍵棒掠,例如:ctrl t,cmd t屁商,ctrl shift t烟很。
4.script
插件包的Sketch文件夾中用于實現(xiàn)此命令的腳本的相對路徑。
5.handler
此命令調用的函數(shù)蜡镶。如果未指定雾袱,則一般直接運行export的函數(shù)
menu
用來設置sketch的菜單列表。
1.title
一個字符串官还,為子菜單的標題芹橡。
2.items
包含次級子菜單項目的數(shù)組,它可以包含兩種類型:
(1)命令標識符的字符串望伦;
(2)數(shù)組(相當于次次級子菜單)僻族。
3.isRoot
默認情況下粘驰,此詞典中列出的菜單項將顯示在菜單中,其名稱由標題鍵指定述么。
如果指定了isRoot鍵蝌数,值為true,則項目將插入插件菜單的根目錄度秘,而不是插入子菜單中顶伞。在這種情況下,title將被忽略剑梳。
在子菜單中忽略這個key唆貌。
例如:
在名稱為“my-plugin”的菜單中定義了三個命令。菜單的前兩項對應于Plugin的兩個命令垢乙,但第三項是一個名為“My Plugin Submenu”的子菜單锨咙。這個子菜單里面有一個項目(插件命令的第三個):
{
"menu": {
"title": "My Plugin Menu",
"items": [
"command1-identifier",
"command2-identifier",
{
"title": "My Plugin Submenu",
"items": ["command3-identifier"]
}
]
}
}