前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计师编程指南之Sketch插件开发 9 之 Shape中的oval

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

作者头像
mixlab
发布2018-04-17 16:04:47
5630
发布2018-04-17 16:04:47
举报

往期文章索引:

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 类。先生成一个圆形试试:

代码语言:javascript
复制
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 颜色的直接使用,代码如下。

代码语言:javascript
复制
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

在某个区域随机生成各种颜色的圆

把上文画圆的命令封装成函数:

代码语言:javascript
复制
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);
}

调用下:

代码语言:javascript
复制
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);

本期内容比较简单,课后自行发挥想象力继续练习下吧!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科技Mix设计Lab 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档