欢迎查看Konva中文文档,这份文档会帮助你快速使用Konva.
如果你在使用中发现问题和建议,请反馈给我们
[中文网站 konvajs-doc.bluehymn.com/docs](http://konvajs-doc.bluehymn.com/docs)
# 什么是Konva?
Konva是一个基于 Canvas 开发的 2d JavaScript框架库, 它可以轻松的实现桌面应用和移动应用中的图形交互交互效果.
Konva 可以实现高性能动画, 过渡, 节点嵌套, 局部操作, 滤镜, 缓存, 事件等功能, 不仅仅适用于桌面与移动开发, 还有更为广泛的应用.
Konva 允许在你舞台上绘图, 添加事件监听, 移动或缩放某个图形, 独立旋转, 以及高效的动画. 即使应用中含有数千个图形也是可以轻松实现的.
项目原著是从KineticJS的[GitHub](https://github.com/ericdrowell/KineticJS)开始。
# Install Konva
如果你使用包管理工具
```
$ npm install konva
$ # or
$ bower install konva
```
或者通过CDN下载
完整版[konva.js](https://cdn.rawgit.com/konvajs/konva/1.4.0/konva.js)
压缩版[konva.min.js](https://cdn.rawgit.com/konvajs/konva/1.4.0/konva.min.js)
#什么是Konva? *What’s Konva?*
Konva是一个基于 Canvas 开发的 2d JavaScript框架库, 它可以轻松的实现桌面应用和移动应用中的图形交互交互效果.
Konva 可以实现高性能动画, 过渡, 节点嵌套, 局部操作, 滤镜, 缓存, 事件等功能, 不仅仅适用于桌面与移动开发, 还有更为广泛的应用.
#它是如何工作 *How does it work?*
一切都是从一个包含了一系列用户的图层`Konva.Layer`的舞台对象`Konva.Stage`开始的
每个图层都有两个`<canvas>`渲染器:一个场景渲染器以及一个`hit graph`渲染器(隐藏渲染器)。场景渲染器是你所看到的东西,`hit graph`渲染器则是一个特殊的隐藏画布,它被用来实现高性能的点击检测机制。
每个图层都可以包含许多形状,形状分组,以及分组的分组。所有的舞台、图层、分组和形状都是节点,就像是HTML页面中的DOM节点一样。
这里有一个节点的层次结构的示例:
Stage
|
+------+------+
| |
Layer Layer
| |
+-----+-----+ Shape
| |
Group Group
| |
+ +---+---+
| | |
Shape Group Shape
|
+
|
Shape
所有节点都可以被样式化、变换,尽管Konva以及内建了很多形状。比如:三角形,原型,图片,精灵,文本,线条,多边形,正多边形,路径,星型等。
你也可以通过实例化Shape类、并创建一个draw函数来创建自定义的形状。
每当你准备好一个具有图层和形状的舞台,你就可以绑定事件监听器、节点变换、运行动画、应用滤镜以及做更多事情。
简单示例:
// first we need to create a stage *首先我们需要创建一个舞台
var stage = new Konva.Stage({
container: 'container', // id of container <div> *包裹舞台的DIV元素的ID
width: 500,
height: 500
});
// then create layer *然后创建一个图层
var layer = new Konva.Layer();
// create our shape *创建我们的形状
var circle = new Konva.Circle({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
radius: 70,
fill: 'red',
stroke: 'black',
strokeWidth: 4
});
// add the shape to the layer *将形状添加到图层上
layer.add(circle);
// add the layer to the stage *将图层添加到舞台上
stage.add(layer);
结果:
![Result](source/assets/overview-circle.png)
##基本形状 *Basic shapes*
`Konva.js` 支持这些形状:矩形,椭圆,线,图像,文字,文字路径,星型,标签,SVG路径,正多边形
你也可以创建自定义的形状:
var triangle = new Konva.Shape({
sceneFunc: function(context) {
context.beginPath();
context.moveTo(20, 50);
context.lineTo(220, 80);
context.quadraticCurveTo(150, 100, 260, 170);
context.closePath();
// special Konva.js method
context.fillStrokeShape(this);
},
fill: '#00D2FF',
stroke: 'black',
strokeWidth: 4
});
结果:
![overview-custom](source/assets/overview-custom.png)
##样式 *Styles*
每个形状都支持以下的样式属性:
- Fill. Solid color, gradients or images *填充:纯色,渐变或者图像纹理
- Stroke (color, width) *描边:颜色,宽度
- Shadow (color, offset, opacity, blur) *阴影:颜色,偏移,透明度,模糊度
- Opacity *透明度
示例:
var pentagon = new Konva.RegularPolygon({
x: stage.getWidth() / 2,
y: stage.getHeight() / 2,
sides: 5,
radius: 70,
fill: 'red',
stroke: 'black',
strokeWidth: 4,
shadowOffsetX : 20,
shadowOffsetY : 25,
shadowBlur : 40,
opacity : 0.5
});
结果:
![](source/assets/overview-styles.png)
##事件 *Events*
使用`Konvajs`,你可以方便地监听用户输入事件(点击,双击,鼠标滑过,触击,连续触击,触摸开始等),属性变更事件(横向缩放变更,填充变更等),和拖拽释放事件(拖拽开始,拖拽移动,托转结束)。
示例:
circle.on('mouseout touchend', function() {
console.log('user input');
});
circle.on('xChange', function() {
console.log('position change');
});
circle.on('dragend', function() {
console.log('drag stopped');
});
See [working example](http://konvajs.github.io/docs/events/Binding_Events.html).
###拖拽和释放 *DRAG AND DROP*
`Konvajs`没有内建的拖拽支持,现在并没有任何拖拽事件(drop,dragenter,dragleave,dragover)
但是,[利用框架,可以轻易地实现这个机制](http://konvajs.github.io/docs/drag_and_drop/Drop_Events.html)。
启用拖拽只需要设置draggable属性为true。
shape.draggable('true');
然后你就可以支持拖拽事件,并[设置移动区域的限制](http://konvajs.github.io/docs/drag_and_drop/Complex_Drag_and_Drop.html)。
##滤镜 *Filters*
`Konvajs`有多重滤镜:模糊,反色,杂色等,[Filters API](http://konvajs.github.io/api/Konva.Filters.html)收录了所有的滤镜。
示例:
![](source/assets/overview-filter.png)
##动画*Animation*
你可以使用两种方式创建动画:
使用`Konva.Animation`的示例:
var anim = new Konva.Animation(function(frame) {
var time = frame.time, // *时间
timeDiff = frame.timeDiff, // *间隔时间
frameRate = frame.frameRate; // *帧率
// update stuff *用于更新动画状态的代码写在下面
}, layer);
anim.start();
使用`Konva.Tween`的示例:
var tween = new Konva.Tween({
node: rect,
duration: 1,
x: 140,
rotation: Math.PI * 2,
opacity: 1,
strokeWidth: 6
});
tween.play();
// or new shorter method: *或者更简短的新方法:
circle.to({
duration : 1,
fill : 'green'
});
【译注】:
这里其实是创建动画的两种最常见的方式。
Animation是指每隔一段时间调用一次我们写好的回调,他们会把当前时间、两帧之间的时间差、帧率以传参的方式交给我们,我们则根据这些数据,手动写代码更新画面的状态。
Tween则是描述间隔时间、属性变化之后,让框架自行更新数据。
前者更加灵活,后者更加方便。
##选择器 *Selectors*
在你创建大型应用时,元素搜索是很有用的。
`Konvajs`提供的选择器可以帮你寻找元素。你可以使用`find()`函数(返回一个集合)或者`findOne()`函数(返回集合中的第一个元素)
var circle = new Konva.Circle({
radius: 10,
fill: 'red',
id : 'face
没有合适的资源?快使用搜索试试~ 我知道了~
基于 Canvas 开发的 2d JavaScript框架库, 它可以轻松的实现桌面应用和移动应用中的图形交互交互效果
共413个文件
md:183个
html:113个
png:54个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 145 浏览量
2024-05-09
20:12:20
上传
评论
收藏 2.4MB ZIP 举报
温馨提示
如果你使用包管理工具 $ npm install konva $ # or $ bower install konva 或者通过CDN下载 完整版konva.js 压缩版konva.min.js #什么是Konva? What’s Konva? Konva是一个基于 Canvas 开发的 2d JavaScript框架库, 它可以轻松的实现桌面应用和移动应用中的图形交互交互效果. Konva 可以实现高性能动画, 过渡, 节点嵌套, 局部操作, 滤镜, 缓存, 事件等功能, 不仅仅适用于桌面与移动开发, 还有更为广泛的应用. #它是如何工作 How does it work? 一切都是从一个包含了一系列用户的图层Konva.Layer的舞台对象Konva.Stage开始的 每个图层都有两个<canvas>渲染器:一个场景渲染器以及一个hit graph渲染器(隐藏渲染器)。场景渲染器是你所看到的东西,hit graph渲染器则是一个特殊的隐藏画布,它被用来实现高性能的点击检测机制。 每个图层都可以包含许多形状,形状分组,以及分组的分组。所有的舞台、图层、分组和形
资源推荐
资源详情
资源评论
收起资源包目录
基于 Canvas 开发的 2d JavaScript框架库, 它可以轻松的实现桌面应用和移动应用中的图形交互交互效果 (413个子文件)
CNAME 0B
head.ejs 2KB
classitem.ejs 2KB
class.ejs 2KB
page.ejs 1KB
module.ejs 851B
after-footer.ejs 732B
footer.ejs 721B
header.ejs 713B
sidebar.ejs 652B
index.ejs 644B
share.ejs 629B
google-analytics.ejs 507B
article.ejs 477B
title.ejs 445B
layout.ejs 368B
sidebar.ejs 354B
archive.ejs 279B
news-banner.ejs 267B
options.ejs 266B
comment.ejs 262B
share.ejs 250B
date.ejs 202B
layout.ejs 183B
post.ejs 175B
deprecated.ejs 143B
icomoon.eot 5KB
Physics_Simulator.html 9KB
Wheel_of_Fortune.html 7KB
Animals_on_the_Beach_Game.html 6KB
Fill.html 5KB
Image_Resize.html 4KB
Modify_Curves_with_Anchor_Points.html 4KB
Drop_Events.html 4KB
Interactive_Building_Map.html 3KB
20000_Nodes.html 3KB
Complex_Tweening.html 3KB
Planets_Image_Map.html 3KB
Multi-touch_Scale_Shape.html 3KB
All_Easings.html 3KB
Layering.html 3KB
Free_Drawing.html 3KB
Star_Spinner.html 3KB
Elastic_Stars.html 3KB
All_Controls.html 3KB
Complex_Drag_and_Drop.html 2KB
Select_by_Name.html 2KB
Select_by_Type.html 2KB
Shape_Tooltips.html 2KB
Common_Easing.html 2KB
Optimize_Strokes.html 2KB
Shape_Tango.html 2KB
Layer_Management.html 2KB
Responsive_Canvas.html 2KB
Multi-touch_Scale_Stage.html 2KB
Drag_And_Drop_Stress_Test.html 2KB
Change_Containers.html 2KB
Animation_Stress_Test.html 2KB
Label.html 2KB
Image_Events.html 2KB
Scaling.html 2KB
10000_Shapes_With_Tooltip.html 2KB
Rotation.html 2KB
Line_-_Spline.html 2KB
Expand_Image_On_Hover.html 2KB
Select_by_id.html 2KB
Line_-_Simple_line.html 2KB
Relative_zooming.html 2KB
Image_Border_Highlighting.html 2KB
Complex_Load.html 2KB
Sprite.html 2KB
Binding_Events.html 2KB
Remove_by_Name.html 2KB
Shadow.html 2KB
Text.html 2KB
Listen_for_Events.html 2KB
Stop_Animation.html 2KB
Drag_And_Drop_Multiple_Shapes.html 2KB
Kaleidoscope.html 2KB
Multiple_Filters.html 2KB
Hide_and_Show.html 2KB
Blur.html 2KB
Brighten.html 2KB
Shape_Redraw.html 2KB
Quantum_Squiggle.html 2KB
Custom_Hit_Region.html 2KB
Stage_Data_URL.html 2KB
Simple_Drag_Bounds.html 2KB
Mobile_Events.html 2KB
Disable_Perfect_Draw.html 2KB
Finish_Event.html 2KB
RGBA.html 2KB
Optimize_Animation.html 2KB
Desktop_and_Mobile.html 2KB
Zoom_Layer_On_Hover.html 2KB
Drag_an_Image.html 1KB
Clipping_Function.html 1KB
Drag_Events.html 1KB
Tween_Filter.html 1KB
Clipping_Regions.html 1KB
共 413 条
- 1
- 2
- 3
- 4
- 5
资源评论
hakesashou
- 粉丝: 7088
- 资源: 1710
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于PyTorch实现Mnist数据识别全部资料+详细文档+高分项目.zip
- 基于pytorch的中文意图识别和槽位填充全部资料+详细文档+高分项目.zip
- 基于pytorch实现文字点选、选字、选择、点触验证码识别,全部资料+详细文档+高分项目.zip
- 基于Tesseract的身份证识别全部资料+详细文档+高分项目.zip
- 基于Tesseract-OCR实现自动扫描识别手机号全部资料+详细文档+高分项目.zip
- 基于torch进行验证码识别,识别率达94%全部资料+详细文档+高分项目.zip
- 基于VUE3.0的高颜值卡密发卡系统,特别适合虚拟商品、知识付费等全部资料+详细文档+高分项目.zip
- 基于孪生神经网络实现的点选识别全部资料+详细文档+高分项目.zip
- 基于人脸识别的课堂考勤系统v2.0全部资料+详细文档+高分项目.zip
- 基于深度学习的12306验证码识别全部资料+详细文档+高分项目.zip
- 基于深度学习的中文语音识别系统全部资料+详细文档+高分项目.zip
- 基于深度学习高性能中文车牌识别全部资料+详细文档+高分项目.zip
- 基于深度学习识别12306验证码全部资料+详细文档+高分项目.zip
- 基于图像识别的自动化黑盒测试框架全部资料+详细文档+高分项目.zip
- 机械设计灭菌医疗制袋机x_t全套设计资料100%好用.zip
- 基于卷积神经网络的表情识别全部资料+优秀项目+详细文档.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功