KineticJS教程(3)

作者: ysm 

3.图形对象

3.1.Shape

Kinetic提供了一个Shape对象用于在层上绘制图形,我们可以通过Kinetic.Shape()构造方法返回一个Shape对象:

<script>

var shape = new Kinetic.Shape(config);

</script>

Shape方法的config参数是关于具体的绘图参数的数组对象,Kinetic就是根据这个参数里的具体信息进行绘图的。

Config的完整参数如下表所示:

Property Description Default Required
drawFunc draw function - required
fill can be a color, linear gradient, radial gradient, or pattern - optional
stroke stroke color - optional
strokeWidth stroke width - optional
lineJoin can be miterround, or bevel miter optional
shadow shadow object - optional
detectonType can be path or pixel path optional
x x position 0 optional
y y position 0 optional
visible whether or not the shape is visible true optional
listening whether or not to listen to events true optional
id unique shape id - optional
name shape name - optional
alpha shape opacity 1 optional
scale shape scale [1,1] optional
rotation rotation about the center point in radians 0 optional
rotationDeg rotation about the center point in degrees 0 optional
centerOffset center offset [0,0] optional
draggable whether or not the shape is draggable false optional
dragConstraint can be nonehorizontal, or vertical none optional
dragBounds drag and drop bounds - optional

其中最重要的参数就是drawFunc,这是一个由用户创建的方法对象,Kinetic绘图时就是调用的这个方法。

比如我们可以如下在页面上画一个矩形:

<!DOCTYPE html>

<html>

<head>

<meta charset=“UTF-8″>

<title>KineticJS</title>

<script src=“../kinetic.js”></script>

</head>

<body>

<script>

window.onload = function() {

//创建舞台

var stage = new Kinetic.Stage({

container : “container”,

width : 600,

height : 400

});

var layer = new Kinetic.Layer();

//创建config参数

var config = {

//绘图方法,画一个矩形

drawFunc : function() {

var context = this.getContext();

context.rect(200, 150, 200, 100);

this.fill();

this.stroke();

},

//填充色

fill : “green”,

//边缘线颜色

stroke : “black”,

//边缘线宽度

strokeWidth : 4

};

//创建Shape对象

var rectShape = new Kinetic.Shape(config);

//把Shape对象添加到层里

layer.add(rectShape);

//将层添加到舞台中

stage.add(layer);

};

</script>

<div id=“container”></div>

</body>

</html>

3.2.常用图形

Kinetic除了有Shape可以用于绘图外,还为我们提供了一系列用于常见图形绘制的对象,包括矩形(Rect)、圆(Circle)、图像(Image)、精灵(Sprite)、文本(Text)、线(Line)、多边形(Polygon)、常用多边形(Regular Polygon)、路径(Path)、星星(Star)几种。

这几个图形对象都是继承自Shape,所以使用方法与Shape类似,以一个config对象指定绘图细节,与Shape不同的是,不需要我们指定drawFunc,只需要根据图形的类型指定关键参数就可以了。

在此,我们以Shape.Rect为例,绘制矩形图形的代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset=“UTF-8″>

<title>KineticJS</title>

<script src=“../kinetic.js”></script>

</head>

<body>

<script>

window.onload = function() {

var stage = new Kinetic.Stage({

container : “container”,

width : 600,

height : 400

});

var layer = new Kinetic.Layer();

//创建config参数

var config = {

//左上角x坐标

x : 200,

//左上角y坐标

y : 150,

//矩形宽度

width : 200,

//矩形高度

height : 100,

//填充色

fill : “blue”,

//边缘线颜色

stroke : “black”,

//边缘线宽度

strokeWidth : 4

};

//创建Shape对象

var rect = new Kinetic.Rect(config);

//把Shape对象添加到层里

layer.add(rect);

//将层添加到舞台中

stage.add(layer);

};

</script>

<div id=“container”></div>

</body>

</html>

具体每种图形的config参数细节可以参见Kinetic的文档。

3.3.图形组

Kinetic提供了Group对象,用于把若干个不同的图形对象,或者是其他的Group对象组合成一个复杂的图形进行统一管理。

比如,我们创建一个包含一个矩形和一个圆的group,并添加到层中显示出来。

<!DOCTYPE html>

<html>

<head>

<meta charset=“UTF-8″>

<title>KineticJS</title>

<script src=“../kinetic.js”></script>

</head>

<body>

<script>

window.onload = function() {

var stage = new Kinetic.Stage({

container : “container”,

width : 600,

height : 400

});

var layer = new Kinetic.Layer();

//创建一个要加进组中的圆

var circle = new Kinetic.Circle({

x : 200,

y : 100,

radius : 50,

fill : “red”

});

//创建一个要加进组中的矩形

var rect = new Kinetic.Rect({

x : 300,

y : 200,

width : 100,

height : 100,

fill : “blue”

});

//创建group对象

var group = new Kinetic.Group();

//把多个图形对象添加到group里

group.add(circle);

group.add(rect);

//把group对象添加到层里

layer.add(group);

//将层添加到舞台中

stage.add(layer);

};

</script>

<div id=“container”></div>

</body>

</html>

由于Group继承自Node,而Shape也是继承自Node,因此,Group的一些属性和行为也和Shape比较类似,比如Group的构造方法也可以像接受一个config参数配置Group的位置、旋转、缩放等属性。

如:

var config = {

x : 220,

y : 40,

rotationDeg : 20

};

或者也可以不在创建group时通过config参数设定,而是创建group对象后通过相对应的方法设定各属性,比如x和y参数就可以分别用group.setX(220)和group.setY(20)来设定。

转载于:https://www.cnblogs.com/zhangleblog/p/3912169.html

KineticJS教程(3)相关推荐

  1. KineticJS教程(6)

    KineticJS教程(6) 作者: ysm 6.拖拽 6.1.拖拽功能 要实现Kinetic对象的拖拽功能很简单,只需要将图形对象的draggable属性设为true就可以了. <script ...

  2. HTML5画布kineticjs路径文字教程

    创建沿路径kineticjs文本,我们可以实例化一个对象textpath()动力学.对于一个完整的方法和属性的列表,查看kinetic.textpath文件. <!DOCTYPE HTML> ...

  3. html2canvas教程_HTML5 Canvas教程:简介

    html2canvas教程 Interested in CSS animation? Check out Creating Animations with CSS, a complete course ...

  4. 前端资源大杂烩(插件、工具、教程)

    angular 框架教程 https://github.com/johnpapa/angular-styleguide/blob/master/a1/i18n/zh-CN.md ionic入门教程 h ...

  5. 使用Docker搭建svn服务器教程

    使用Docker搭建svn服务器教程 svn简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很 ...

  6. mysql修改校对集_MySQL 教程之校对集问题

    本篇文章主要给大家介绍mysql中的校对集问题,希望对需要的朋友有所帮助! 推荐参考教程:<mysql教程> 校对集问题 校对集,其实就是数据的比较方式. 校对集,共有三种,分别为:_bi ...

  7. mysql备份psb文件怎么打开_Navicat for MySQL 数据备份教程

    原标题:Navicat for MySQL 数据备份教程 一个安全和可靠的服务器与定期运行备份有密切的关系,因为错误有可能随时发生,由攻击.硬件故障.人为错误.电力中断等都会照成数据丢失.备份功能为防 ...

  8. php rabbmq教程_RabbitMQ+PHP 教程一(Hello World)

    介绍 RabbitMQ是一个消息代理器:它接受和转发消息.你可以把它当作一个邮局:当你把邮件放在信箱里时,你可以肯定邮差先生最终会把邮件送到你的收件人那里.在这个比喻中,RabbitMQ就是这里的邮箱 ...

  9. 【置顶】利用 NLP 技术做简单数据可视化分析教程(实战)

    置顶 本人决定将过去一段时间在公司以及日常生活中关于自然语言处理的相关技术积累,将在gitbook做一个简单分享,内容应该会很丰富,希望对你有所帮助,欢迎大家支持. 内容介绍如下 你是否曾经在租房时因 ...

最新文章

  1. Java - HtmlEmail 邮件发送
  2. centos7 源码编译安装mysql 5.7.21
  3. OpenCV3编程入门(毛星云)之视频读取与播放
  4. [转载] 常用应届生Java开发笔试面试题(更新中)
  5. java中大量匿名内部类的坏处_java中的匿名内部类总结
  6. Ajax跨域请求与解决方案
  7. RSA加密算法的简单案例
  8. megacli组建raid
  9. shell学习之-sed用法解析_Shell脚本之sed的使用
  10. android 多线程 崩溃,Android异常崩溃捕获
  11. mysql 协议解析源码 c_MySQL协议分析2
  12. stm32f103+znfat+ch375+vs1003实现简单mp3播放器功能
  13. 人工智能入门——机器学习小案例(二)
  14. 追星女孩彩虹屁情话合集100条 ✔︎ (三)
  15. Gesture-Recognition
  16. 先有蛋还是先有鸡?互联网的线上线下
  17. 计算机无法识别华为usb设备,华为路由A1插上USB储存设备无法识别怎么办
  18. 智能对话机器人开发实战案例剖析(2)
  19. excel2010免费下载与安装
  20. 论文阅读中经常出现的“消融研究/实验”

热门文章

  1. 【转】可编程管线基本流程
  2. sublime-text-2相关快捷键
  3. 寻找GridView中模板列中的控件
  4. restful是什么php,什么是RESTful?
  5. leetcode最小面积_Code Review Swift 算法题: 最小面积矩形  Leetcode 的动人之处
  6. MySQL非等值连接
  7. 通过Nginx简单安装
  8. 消息中间件的背景分析
  9. MyBaits 支持哪些数据源类型?
  10. 类文件结构-field