设计师编程指南之Sketch插件开发 9 之 Shape中的oval

往期文章索引:

1 / 入门基本概念、page的相关操作

2 / artboard 、NSFileManager 和 NSString 关于文件及文件夹的相关操作

3 / DIY一个Sketch插件,生成猫猫狗狗的全家福

4 / NSPasteboard 、text 的操作

5/ Shape 的一些操作,主要介绍 line 及 rect

6/Shape的curve操作

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 当然,还有资深的专家在星球里。

*

热门文章

谈设计与技术,以WEB布局为例

斜杆青年,这里有适合你的跨界社区

建筑师编程指南之SketchUp插件开发 1

DIY一个Sketch插件,生成猫猫狗狗的全家福

我们利用周末尝试了一次CO-CODING活动

全栈设计+编程的方法论,以“猜对联”小程序为例

*

关于公众号:

本公众号定期更新人工智能&设计&科技内容。

谈点设计,敲点代码,偶尔创作点人工智能实验产品

码字不易,开启新的打赏方式:

(0)

相关推荐