设计师编程指南之Sketch插件开发 9 之 Shape中的oval
往期文章索引:
1 / 入门基本概念、page的相关操作
2 / artboard 、NSFileManager 和 NSString 关于文件及文件夹的相关操作
5/ Shape 的一些操作,主要介绍 line 及 rect
7/ GUI
8/ Cocoa基础
本期介绍 Shape 里的 oval ( 圆形 )。
1
画圆
sketch 里画圆的命令是基于 MSOvalShape 类。先生成一个圆形试试:
var doc=context.document;
var page=doc.currentPage();
var ovalShape = MSOvalShape.alloc().init();
ovalShape.frame = MSRect.rectWithRect(NSMakeRect(0,0,50,50));
var shapeGroup=MSShapeGroup.shapeWithPath(ovalShape);
var fill = shapeGroup.style().addStylePartOfType(0);
fill.color = MSColor.colorWithRGBADictionary({r: 0.1, g: 0.1, b: 0.8, a: 1}); page.addLayer(shapeGroup);
2
颜色
颜色的设置能不能像 web 开发那样方便呢,可以的, sketch 通过封装一个函数可以达到 Hex 、rgba 、 keywords 、hls 颜色的直接使用,代码如下。
function MSColorFromString(color) {
return MSImmutableColor.colorWithSVGString(color).newMutableCounterpart() }
// Hex
var c1=MSColorFromString("#33AE15"), c2=MSColorFromString("#145515FF");
// rgb/rgba
var c3=MSColorFromString("rgb(255,200,0)"), c4=MSColorFromString("rgba(55,0,0,0.5)");
// Color keywords
var c5=MSColorFromString("red");
// hls
var c6=MSColorFromString("hsl(270, 60%, 50%, .15)");
可以打印出来,看看数据。
3
在某个区域随机生成各种颜色的圆
把上文画圆的命令封装成函数:
function addOval(color,x,y,w,h){
var ovalShape = MSOvalShape.alloc().init();
ovalShape.frame = MSRect.rectWithRect(NSMakeRect(x,y,w,h));
var shapeGroup=MSShapeGroup.shapeWithPath(ovalShape);
var fill = shapeGroup.style().addStylePartOfType(0);
fill.color = color; page.addLayer(shapeGroup); }
调用下:
var doc=context.document;
var page=doc.currentPage();
var w=20,h=20; addOval(c1,Math.random()*300,Math.random()*300,w,h); addOval(c2,Math.random()*300,Math.random()*300,w,h); addOval(c3,Math.random()*300,Math.random()*300,w,h); addOval(c4,Math.random()*300,Math.random()*300,w,h); addOval(c5,Math.random()*300,Math.random()*300,w,h); addOval(c6,Math.random()*300,Math.random()*300,w,h);
本期内容比较简单,课后自行发挥想象力继续练习下吧!
*
知识星球
更多 sketch 插件的开发,代码的下载,可以在知识星球交流。还包括:
1 看到一些好案例,关键技术解决方案,写出文章又不成体系,发星球;
2 我会在知识星球发一些非常机密的研究心得;
3 一些非常有技巧的知识,给付费用户;
4 公众号的迭代版本,针对文章发更为升级、核心的内容。
5 当然,还有资深的专家在星球里。
*
热门文章
*
关于公众号:
本公众号定期更新人工智能&设计&科技内容。
谈点设计,敲点代码,偶尔创作点人工智能实验产品。
码字不易,开启新的打赏方式: