KineticJS教程(3)
KineticJS教程(3)
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 miter, round, 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 none, horizontal, 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)的更多相关文章
- KineticJS教程(12)
KineticJS教程(12) 作者: ysm 12.舞台 12.1.舞台的大小 舞台创建后还可以用舞台对象的setSize(width, height)方法来设置舞台的宽度与高度. <scr ...
- KineticJS教程(11)
KineticJS教程(11) 作者: ysm 11.对象的上下关系 11.1.层的上下关系 Kinetic的层是按照添加到舞台的次序,由下向上排列,上层遮盖下层的图形.每个层各自有一个ZIndex编 ...
- KineticJS教程(10)
KineticJS教程(10) 作者: ysm 10.在容器之间移动图形对象 Kinetic支持通过图形对象的moveTo(container)方法把图形对象从一个容器移动到另一个容器里,这个容器指 ...
- KineticJS教程(9)
KineticJS教程(9) 作者: ysm 9.选择器 Kinetic在舞台.层和组对象上都提供了get方法,用于返回这三者中包含的对象. 9.1.根据ID获取对象 要用id获取对象,首先要给对象 ...
- KineticJS教程(8)
KineticJS教程(8) 作者: ysm 8.动画 动画就是一帧帧的画面按照时间间隔显示出来,Kinetic给我们提供了一个舞台对象的onFrame方法,用这个方法可以绑定一个动画方法,我们要显 ...
- KineticJS教程(7)
KineticJS教程(7) 作者: ysm 7.图形变换 7.1.线性变化 Kinetic提供了一个图形对象的transitionTo(config)方法实现图形的线性变换,也就是从原始的状态线性变 ...
- KineticJS教程(6)
KineticJS教程(6) 作者: ysm 6.拖拽 6.1.拖拽功能 要实现Kinetic对象的拖拽功能很简单,只需要将图形对象的draggable属性设为true就可以了. <script ...
- KineticJS教程(5)
KineticJS教程(5) 作者: ysm 5.事件响应 5.1.图形的事件响应 图形对象对事件的响应处理可以使用 on() 方法绑定事件类型和相应方法. On() 方法需要一个事件类型参数和相应 ...
- KineticJS教程(4)
KineticJS教程(4) 作者: ysm 4.图形样式 4.1.填充 Kinetic中图形的填充属性可以在构造方法中的config参数中的fill属性进行设定,也可以用图形对象的setFill方 ...
随机推荐
- JAVA中关于大数问题
这里只是java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 一.样例:java中的输出a+b import java.io ...
- 我的OI生涯 第五章
我的OI生涯 第五章 千古诗才,蓬莱文章建安骨 一身傲骨,青莲居士谪仙人 李白追月逆江河 包黑斩龙顺民心 豪气压群雄,能使力士脱靴,贵妃捧砚; 仙才媲众美,不让参军俊逸,开府清新 我辈此中惟饮酒 先生 ...
- [BZOJ4444][SCOI2015]国旗计划(倍增)
链上是经典贪心问题,将线段全按左端点排序后把点全撒在线段右端点上.这里放到环上,倍长即可. 题目保证不存在区间包含情况,于是有一种暴力做法,先将战士的管辖区间按左端点从小到大排序,对于询问x,从x战士 ...
- [CCC 2018] 平衡树
题面在这里! 根据题目描述就可以直接模拟出一个暴力. 如果把前 n^(1/2) 的树的方案数先一遍 O(n^(3/4)) 暴力预处理出来(其实复杂度并到不了这个级别),然后把n带进来直接暴力算就行了. ...
- [HZOI 2016]我们爱数数
[HZOI 2016]我们爱数数 题目大意: 一张圆桌,每个位置按顺时针从\(1\)到\(n\)编号.有\(n\)个人,编号从\(1\)到\(n\).如果编号为\(i\)的人坐到了编号为\(i\)的位 ...
- 第1篇--基于jdk7和jdk8分析 JVM的内存区域
基于jdk7和jdk8分析 JVM的内存区域 目录前言1.什么是JVM2.JRE/JDK/JVM是什么关系3.JVM执行程序的过程4. JVM的生命周期5.JVM垃圾回收一.运行时数据区的组成1.程 ...
- 【Python笔记】十分钟搞定pandas
本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook .习惯 ...
- 1、Redis简介、安装和基础入门
-------------------------------------------------------- 主要内容包括: 1.Redis简介 2.Redis安装.启动.停止 3.Redis基础 ...
- [原]Redis使用场景及使用经验
Redis is an open source (BSD licensed), in-memory data structure store! 欢迎转载,转载请注明出处 刚刚结束一个游戏类的活动项目, ...
- 慢查询日志分析工具之pt-query-digest
简介 pt-query-digest 是用于分析mysql慢查询的一个工具,与mysqldumpshow工具相比,py-query_digest 工具的分析结果更具体,更完善. 有时因为 ...