目錄
-
入門
-
高級
在Sketch 3.8中案铺,我們引入了Action API:一種讓插件對應(yīng)用程序中的事件作出反應(yīng)的方式蔬芥。使用它梆靖,插件作者可以編寫在觸發(fā)某些操作時(shí)執(zhí)行的代碼控汉,如“打開文檔”,“保存”返吻,“添加畫板”......
什么是操作(Action)姑子?
操作是應(yīng)用程序中發(fā)生的事件,通常是用戶交互的結(jié)果测僵。操作有名稱CloseDocument
街佑,DistributeHorizontally
或者TogglePresentationMode
治泥,你可以告訴你的插件在這些操作被觸發(fā)時(shí)運(yùn)行代碼分别。
我如何注冊我的插件來“聆聽”一個(gè)操作?
簡單:你只需在manifest.json
你的插件已有的文件中添加一個(gè)處理程序噪伊。
我們將為該OpenDocument
操作添加一個(gè)新的處理程序:
"commands" : [
...
+ {
+ "script" : "my-action-listener.js",
+ "name" : "My Action Listener",
+ "handlers" : {
+ "actions": {
+ "OpenDocument": "onOpenDocument"
+ }
+ },
+ "identifier" : "my-action-listener-identifier"
+ }
...
],
我們告訴我們的插件榨婆,我們希望onOpenDocument
在文檔打開時(shí)運(yùn)行該功能磁携,所以讓我們將其添加到my-action-listener.js
:
export function onOpenDocument(context) {
context.document.showMessage('Document Opened')
}
保存所有內(nèi)容,構(gòu)建插件良风,現(xiàn)在谊迄,無論何時(shí)在Sketch中打開文檔,您都應(yīng)該看到一個(gè)小小的吐司(Toast)橫幅烟央,上面寫著“文檔已打開”统诺。
行動(dòng)上下文
當(dāng)一個(gè)操作被觸發(fā)時(shí),Sketch可以向目標(biāo)函數(shù)發(fā)送一些關(guān)于操作本身的信息(例如選擇改變時(shí)選擇的圖層疑俭,或者打開新文檔時(shí)的當(dāng)前文檔)粮呢。我們稱之為操作上下文,并且可以使用context
作為目標(biāo)函數(shù)的參數(shù)發(fā)送的操作context.actionContext
钞艇。
但請記住啄寡,并非所有操作都會(huì)設(shè)置Action Context。事實(shí)上香璃,他們中的大多數(shù)目前都沒有这难,所以如果您認(rèn)為您想在Action Context中訪問某些內(nèi)容,請向我們發(fā)送便條葡秒,然后盡快添加姻乓。
begin
/ finish
行動(dòng)
一些行動(dòng)(如SelectionChanged
)實(shí)際上發(fā)生在兩個(gè)階段:begin
和finish
嵌溢。如果你想調(diào)用一個(gè)函數(shù)只對其中的一個(gè),你可以添加一個(gè)處理程序SelectionChanged.begin
蹋岩,或SelectionChanged.finish
赖草。如果您不添加任何內(nèi)容,該操作將被觸發(fā)兩次剪个。
找到正確的行動(dòng)
有關(guān)API中所有可用操作的列表秧骑,請查看操作參考部分。
專業(yè)提示:有時(shí)瀏覽列表的工作量太大扣囊,而您只想要更直接一些乎折。對于這些情況,您可以聽取所有操作以找到您需要的一個(gè)侵歇。
再次骂澄,如果有任何事件想要添加到列表中,請告訴我們惕虑,我們將嘗試添加它(由于性能原因坟冲,某些事件不在列表中,例如“圖層被拖動(dòng)”)溃蔫。
下一步
如果您想更詳細(xì)地了解Action API健提,請嘗試以下主題:
- Action API參考 - 了解可用操作的完整列表。
- 其他插件示例 - 查看我們的示例插件項(xiàng)目列表伟叛。