发布时间:2024-07-30
浏览次数:0
我发现网上关于插件开发的指南太少了,没有一个能成功,所以我写了这个系列文章:
我们需要理解语法特征
基于,支持在 JS 中调用 -c 方法。我们需要了解一些 -c 的一些语法特征。
-C 最大的特点是继承了消息传递模型。在 C++ 中,调用方法的语法如下:
obj.method(argument);
-C 写成:
[obj method: argument];
下面是一个示例,例如: 接口: :
OC 写成:
[doc askForUserInput:@"Enter your pages" initialValue:@"default"];
写:
doc.askForUserInput_initialValue("Enter your pages", "default");
当然,也可以直接用OC的形式写出来。这里建议直接以OC的形式编写,以区别于纯js方法。
主要对象
所有对对象的操作都经过 。 对象,oc 对应于 。我们可以将其打印出来并使用 log 命令进行查看。
var doc = context.document,
plugin = context.plugin,
command = context.command,
page = doc.currentPage(),
artboards = page.artboards(),
selectedArtboard = page.currentArtboard(),// 当前被选择的画板
selection = context.selection; // 被选择的图层
log(doc)
打开 --- 运行 ,然后将上述代码粘贴到其中,然后按右下角的 运行 按钮。
本机对象方法清单
如果你看到一个优秀的IOS APP,想要了解它的实现原理,你应该通过逆向工程来检查APP的源代码,学习作者的核心思想。IOS逆向工程有一个很好的工具:类转储。它利用-C语言的特性,提取存储在Mach-O文件中的头文件信息sketch文件打不开,并生成相应的.h文件。特别是对于插件开发来说,由于官方文档写得很粗糙,所以需要理解一些已经写在代码中的方法,以便更好地开发。有一个头文件信息已经被倾倒掉了,地址:
当然,您也可以使用该工具自己从本地转储一个副本。
动手实验
这当然是本文的重点。要创建新文件,请先打开显示页面列表,如下所示。然后进入运行界面。
然后我们输入代码,这是一段用于创建 n 个新页面的代码:
var doc=context.document;
var num=[doc askForUserInput:@"输入需要创建的页面数量" initialValue:@"5"];
log(num);
for(var n=0;n var newPage = doc.addBlankPage();
newPage.setName(n.toString());
};
看看左边页面列表的变化,是不是效率不高?接下来,尝试复制当前页面的代码 n 份:
var doc=context.document,
page=doc.currentPage();
var num=[doc askForUserInput:@"输入需要创建的页面数量" 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]
};
本文是插件开发的开始,所以我暂时会写到它。你觉得怎么样?接下来,我们将介绍代码、组、图层、样式、字体、图像等,在代码的加持下,绘图效率能提高n倍吗?
————打开大脑也是可行的,甚至可以访问搜索引擎、图片素材库、生成HTML页面等。
知识星球
更多插件开发可以在 上进行交流。还包括:
1、看一些好的案例,关键的技术方案sketch文件打不开,写出不系统的文章,发到星球上;
2 我会在 上发布一些非常保密的研究想法;
3、对付费用户有一定的熟练掌握的知识;
4 公众号迭代版发布更多文章的升级和核心内容。
5 当然,这个星球上也有资深的专家。
热门文章
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码