更多關(guān)于CocoaScript

目錄

  1. 入門

    1. 插件基礎(chǔ)
    2. 您的第一個(gè)插件
    3. 開發(fā)環(huán)境
    4. 調(diào)試
    5. Action API
    6. 發(fā)布插件
  2. 高級

    1. 插件捆綁
    2. 插件弟蚀,腳本和命令
    3. 插件位置
    4. 更多關(guān)于CocoaScript
    5. SketchTool

Sketch插件可以通過MochaCocoaScript實(shí)現(xiàn),它允許您使用JavaScript編寫的外部腳本使用Objective-C / Cocoa代碼。該橋負(fù)責(zé)JavaScript和Cocoa之間的翻譯,因此您可以專注于重要的部分(即使Sketch成為可怕的東西)。

來自CocoaScript的自述文件:

CocoaScript建立在Apple的JavaScriptCore之上,這是與Safari相同的JavaScript引擎。所以帮碰,當(dāng)你在CocoaScript中編寫代碼時(shí),你確實(shí)在編寫JavaScript拾积。

CocoaScript還包含一個(gè)橋梁殉挽,可讓您通過JavaScript訪問Apple的Cocoa框架。這意味著除了標(biāo)準(zhǔn)JavaScript庫之外拓巧,您還可以使用許多精彩的類和函數(shù)斯碌。

JavaScript環(huán)境

您的插件腳本不會在瀏覽器中運(yùn)行,但會在JavaScriptCore上下文中運(yùn)行玲销。因此它運(yùn)行的JavaScript環(huán)境有點(diǎn)不常見输拇。

  • JavaScript的標(biāo)準(zhǔn)庫可用。
  • 其他的都不是贤斜。這意味著setTimeout策吠,fetchconsole等都是不可用瘩绒。
  • NodeJS核心模塊不可用猴抹。

話雖這么說,如果你使用skpm锁荔,它會自動填充工具有些事情你:console蟀给,setTimeoutsetIntervalfetch

訪問Cocoa和Sketch API

您可以從CocoaScript訪問所有Cocoa和Sketch API跋理。

Objective-C屬性的行為與在橋的JavaScript端應(yīng)該一樣择克。

Objective-C方法作為對象的不透明JavaScript代理的屬性公開。

將選擇器名稱轉(zhuǎn)換為JavaScript屬性名稱時(shí)采取以下步驟:

  • 所有冒號都轉(zhuǎn)換為下劃線(最新的下劃線是可選的)前普。
  • 選擇器的每個(gè)組件都連接成一個(gè)沒有分隔的字符串肚邢。

這樣,一個(gè)選擇器如executeOperation:withObject:error:轉(zhuǎn)換為函數(shù)名稱executeOperation_withObject_error()拭卿。

例如骡湖,如果你想打開一個(gè)File Picker面板,你可以使用NSOpenPanel類:

var openPanel = NSOpenPanel.openPanel()
openPanel.setCanChooseDirectories(false)
openPanel.setCanChooseFiles(true)
openPanel.setCanCreateDirectories(false)
openPanel.setDirectoryURL(NSURL.fileURLWithPath('~/Documents/'))

openPanel.setTitle('Choose a file')
openPanel.setPrompt('Choose')
openPanel.runModal()

如果您需要更多關(guān)于Cocoa的信息峻厚,請查看參考資料部分响蕴。

一些特定的全局變量

指針

對于某些Obj-C選擇器,您可能需要傳遞一個(gè)指針惠桃。這在JavaScript中不存在浦夷,所以有一種全局方法來創(chuàng)建一個(gè):

var ptr = MOPointer.alloc().init()
var ptrToSomething = MOPointer.alloc().initWithValue(something)

長時(shí)間運(yùn)行腳本

如果您的腳本正在進(jìn)行異步操作,我們需要告訴Sketch保留它并且不要垃圾收集它刽射。

你可以通過訪問COScript

COScript.currentCOScript().shouldKeepAround = true

腳本完成其工作后军拟,不要忘記釋放它:

COScript.currentCOScript().shouldKeepAround = false

下一步

有關(guān)這座橋如何運(yùn)作的更多信息,請查看Mocha README誓禁,它確實(shí)是完整的(但需要一些Obj-C的概念)。

原文:https://developer.sketchapp.com/guides/cocoascript/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肾档,一起剝皮案震驚了整個(gè)濱河市摹恰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌怒见,老刑警劉巖俗慈,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遣耍,居然都是意外死亡闺阱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門舵变,熙熙樓的掌柜王于貴愁眉苦臉地迎上來酣溃,“玉大人,你說我怎么就攤上這事纪隙∩尥悖” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵绵咱,是天一觀的道長碘饼。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么艾恼? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任住涉,我火速辦了婚禮,結(jié)果婚禮上钠绍,老公的妹妹穿的比我還像新娘秆吵。我一直安慰自己,他們只是感情好五慈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布纳寂。 她就那樣靜靜地躺著,像睡著了一般泻拦。 火紅的嫁衣襯著肌膚如雪毙芜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天争拐,我揣著相機(jī)與錄音腋粥,去河邊找鬼。 笑死架曹,一個(gè)胖子當(dāng)著我的面吹牛隘冲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绑雄,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼展辞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了万牺?” 一聲冷哼從身側(cè)響起罗珍,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脚粟,沒想到半個(gè)月后覆旱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡核无,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年扣唱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片团南。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡噪沙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出已慢,到底是詐尸還是另有隱情曲聂,我是刑警寧澤蜗顽,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布泡徙,位于F島的核電站,受9級特大地震影響睛廊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旭咽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一贞奋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧穷绵,春花似錦轿塔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至目养,卻和暖如春俩由,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背癌蚁。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工幻梯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人努释。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓碘梢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伐蒂。 傳聞我的和親對象是個(gè)殘疾皇子煞躬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355