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)来设定。

KineticJS教程(3)的更多相关文章

  1. KineticJS教程(12)

    KineticJS教程(12) 作者: ysm  12.舞台 12.1.舞台的大小 舞台创建后还可以用舞台对象的setSize(width, height)方法来设置舞台的宽度与高度. <scr ...

  2. KineticJS教程(11)

    KineticJS教程(11) 作者: ysm 11.对象的上下关系 11.1.层的上下关系 Kinetic的层是按照添加到舞台的次序,由下向上排列,上层遮盖下层的图形.每个层各自有一个ZIndex编 ...

  3. KineticJS教程(10)

    KineticJS教程(10) 作者: ysm  10.在容器之间移动图形对象 Kinetic支持通过图形对象的moveTo(container)方法把图形对象从一个容器移动到另一个容器里,这个容器指 ...

  4. KineticJS教程(9)

    KineticJS教程(9) 作者: ysm  9.选择器 Kinetic在舞台.层和组对象上都提供了get方法,用于返回这三者中包含的对象. 9.1.根据ID获取对象 要用id获取对象,首先要给对象 ...

  5. KineticJS教程(8)

    KineticJS教程(8) 作者: ysm  8.动画 动画就是一帧帧的画面按照时间间隔显示出来,Kinetic给我们提供了一个舞台对象的onFrame方法,用这个方法可以绑定一个动画方法,我们要显 ...

  6. KineticJS教程(7)

    KineticJS教程(7) 作者: ysm 7.图形变换 7.1.线性变化 Kinetic提供了一个图形对象的transitionTo(config)方法实现图形的线性变换,也就是从原始的状态线性变 ...

  7. KineticJS教程(6)

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

  8. KineticJS教程(5)

    KineticJS教程(5) 作者: ysm  5.事件响应 5.1.图形的事件响应 图形对象对事件的响应处理可以使用 on() 方法绑定事件类型和相应方法. On() 方法需要一个事件类型参数和相应 ...

  9. KineticJS教程(4)

    KineticJS教程(4) 作者: ysm  4.图形样式 4.1.填充 Kinetic中图形的填充属性可以在构造方法中的config参数中的fill属性进行设定,也可以用图形对象的setFill方 ...

随机推荐

  1. android 捕获所有异常 未捕获的异常

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 定义一个类 继承 应用, 实现 未捕获异常处理器 uncaughtExceptionHa ...

  2. 矩阵树定理(Matrix Tree)学习笔记

    如果不谈证明,稍微有点线代基础的人都可以在两分钟内学完所有相关内容.. 行列式随便找本线代书看一下基本性质就好了. 学习资源: https://www.cnblogs.com/candy99/p/64 ...

  3. 【矩阵快速幂优化DP】【校内测试】

    实际上是水水题叻,先把朴素DP方程写出来,发现$dp[i]$实际上是$dp[i-k]-dp[i-1]$的和,而看数据范围,我们实际上是要快速地求得这段的和,突然就意识到是矩阵快速幂叻. 构建矩阵什么的 ...

  4. 安装myeclipse的常见问题

    1.破解myeclipse网站:  https://jingyan.baidu.com/article/acf728fd49519ff8e410a361.html 

  5. Codeforces Beta Round #7 D. Palindrome Degree hash

    D. Palindrome Degree 题目连接: http://www.codeforces.com/contest/7/problem/D Description String s of len ...

  6. 《python学习手册》第34章 异常对象

    基于字符串的异常 python在2.6之前可以使用字符串来定义异常,并且是通过对象标识符来匹配的(即通过is 而不是==) myexc = "My excetion string" ...

  7. Lnmmp

    简介 LNMMP=Linux+Nginx+MySQL+Memcache+PHP: 利用Nginx的高性能特点做前端反向代理服务器,分发用户请求,并在能够利用缓存的地方使用Memcache缓存服务,以加 ...

  8. CentOS下的yum upgrade和yum update区别,没事别乱用,和Ubuntu的update不一样!

    说明:生产环境对软件版本和内核版本要求非常精确,别没事有事随便的进行yum update操作!!!!!!!!! yum update:升级所有包同时也升级软件和系统内核 yum upgrade:只升级 ...

  9. UVA 10972 RevolC FaeLoN(边-双连通+缩点)

    很好的一道图论题,整整撸了一上午... 题意是给定一个无向图,要求将所有边变为有向边,求最少加入多少条有向边,使得该图强连通?这里先假设一个问题:给定一个无向子图,该子图具有怎样的性质才能使得将其无向 ...

  10. 測试oracle 11g cluster 中OLR的重要性

     測试oracle 11g cluster 中OLR的重要性 called an Oracle Local Registry (OLR): each node in a cluster has a ...