你好,歡迎進(jìn)入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!
發(fā)布時(shí)間:2024-07-30
瀏覽次數(shù):0
我發(fā)現(xiàn)網(wǎng)上關(guān)于插件開(kāi)發(fā)的指南太少了,沒(méi)有一個(gè)能成功,所以我寫(xiě)了這個(gè)系列文章:
我們需要理解語(yǔ)法特征
基于,支持在 JS 中調(diào)用 -c 方法。我們需要了解一些 -c 的一些語(yǔ)法特征。
-C 最大的特點(diǎn)是繼承了消息傳遞模型。在 C++ 中,調(diào)用方法的語(yǔ)法如下:
obj.method(argument);
-C 寫(xiě)成:
[obj method: argument];
下面是一個(gè)示例,例如: 接口: :
OC 寫(xiě)成:
[doc askForUserInput:@"Enter your pages" initialValue:@"default"];
寫(xiě):
doc.askForUserInput_initialValue("Enter your pages", "default");
當(dāng)然,也可以直接用OC的形式寫(xiě)出來(lái)。這里建議直接以O(shè)C的形式編寫(xiě),以區(qū)別于純js方法。
主要對(duì)象
所有對(duì)對(duì)象的操作都經(jīng)過(guò) 。 對(duì)象,oc 對(duì)應(yīng)于 。我們可以將其打印出來(lái)并使用 log 命令進(jìn)行查看。
var doc = context.document,
? ?plugin = context.plugin,
? ?command = context.command,
? ?page = doc.currentPage(),
? ?artboards = page.artboards(),
? ?selectedArtboard = page.currentArtboard(),// 當(dāng)前被選擇的畫(huà)板
? ?selection = context.selection; // 被選擇的圖層
? ?log(doc)
打開(kāi) --- 運(yùn)行 ,然后將上述代碼粘貼到其中,然后按右下角的 運(yùn)行 按鈕。
本機(jī)對(duì)象方法清單
如果你看到一個(gè)優(yōu)秀的IOS APP,想要了解它的實(shí)現(xiàn)原理,你應(yīng)該通過(guò)逆向工程來(lái)檢查APP的源代碼,學(xué)習(xí)作者的核心思想。IOS逆向工程有一個(gè)很好的工具:類(lèi)轉(zhuǎn)儲(chǔ)。它利用-C語(yǔ)言的特性,提取存儲(chǔ)在Mach-O文件中的頭文件信息sketch文件打不開(kāi),并生成相應(yīng)的.h文件。特別是對(duì)于插件開(kāi)發(fā)來(lái)說(shuō),由于官方文檔寫(xiě)得很粗糙,所以需要理解一些已經(jīng)寫(xiě)在代碼中的方法,以便更好地開(kāi)發(fā)。有一個(gè)頭文件信息已經(jīng)被傾倒掉了,地址:
當(dāng)然,您也可以使用該工具自己從本地轉(zhuǎn)儲(chǔ)一個(gè)副本。
動(dòng)手實(shí)驗(yàn)
這當(dāng)然是本文的重點(diǎn)。要?jiǎng)?chuàng)建新文件,請(qǐng)先打開(kāi)顯示頁(yè)面列表,如下所示。然后進(jìn)入運(yùn)行界面。
然后我們輸入代碼,這是一段用于創(chuàng)建 n 個(gè)新頁(yè)面的代碼:
var doc=context.document;
var num=[doc askForUserInput:@"輸入需要?jiǎng)?chuàng)建的頁(yè)面數(shù)量" initialValue:@"5"];
log(num);
for(var n=0;n ? ?var newPage = doc.addBlankPage();
? newPage.setName(n.toString());
};
看看左邊頁(yè)面列表的變化,是不是效率不高?接下來(lái),嘗試復(fù)制當(dāng)前頁(yè)面的代碼 n 份:
var doc=context.document,
? ?page=doc.currentPage();
var num=[doc askForUserInput:@"輸入需要?jiǎng)?chuàng)建的頁(yè)面數(shù)量" initialValue:@"5"];
log(num);
for(var n=0;n
? ?var newPage = [page copy];
? ?var index=[[doc pages] count];
? ?var newName=page.name()+'_'+index;
? ?[newPage setName:newName]
? ?[[doc documentData] addPage:newPage]
? ?[doc setCurrentPage:page] ? ?
? ?
};
本文是插件開(kāi)發(fā)的開(kāi)始,所以我暫時(shí)會(huì)寫(xiě)到它。你覺(jué)得怎么樣?接下來(lái),我們將介紹代碼、組、圖層、樣式、字體、圖像等,在代碼的加持下,繪圖效率能提高n倍嗎?
————打開(kāi)大腦也是可行的,甚至可以訪(fǎng)問(wèn)搜索引擎、圖片素材庫(kù)、生成HTML頁(yè)面等。
知識(shí)星球
更多插件開(kāi)發(fā)可以在 上進(jìn)行交流。還包括:
1、看一些好的案例,關(guān)鍵的技術(shù)方案sketch文件打不開(kāi),寫(xiě)出不系統(tǒng)的文章,發(fā)到星球上;
2 我會(huì)在 上發(fā)布一些非常保密的研究想法;
3、對(duì)付費(fèi)用戶(hù)有一定的熟練掌握的知識(shí);
4 公眾號(hào)迭代版發(fā)布更多文章的升級(jí)和核心內(nèi)容。
5 當(dāng)然,這個(gè)星球上也有資深的專(zhuān)家。
熱門(mén)文章
如有侵權(quán)請(qǐng)聯(lián)系刪除!
Copyright ? 2023 江蘇優(yōu)軟數(shù)字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務(wù)提供商
13262879759
微信二維碼