画布
-
[置顶]甘特图怎么制作更方便?甘特图制作方法
本文关于甘特图怎么制作更方便?甘特图制作方法。其实现在制作甘特图的方式有多种多样,可以直接使用表格的方式来制作,或者是使用一些线上工具来制作甘特图都是可以的。今天针对于甘特图制作方式给大家详细的分享一...
-
[置顶]okr的实施标准步骤是什么?成功实施落地OKR的要点
本文关于okr的实施标准步骤是什么?成功实施落地OKR的要点。其实有关于Okr工作法,相信很多人都有一定的了解。OKR定义为一个重要的思维框架和一个发展中的学科,旨在确保员工一起工作,并专注于做出可衡...
-
//1.创建舞台
var stage = new Konva.Stage({
container: 'container',
width: window.innerWidth, //宽高(全屏)
height: window.innerHeight,
})
//2.创建层
var layer = new Konva.Layer();
//3.将层添加至舞台
stage.add(layer);
//4.创建矩形
var rect = new Konva.Rect({
x: 100, //起始坐标
y: 100,
width: 200, //宽高
height: 100,
scaleX: 1.3,
scaleY: 1.3,
draggable: true,
fill: 'red' //填充
})
//5.将矩形添加至层
layer.add(rect);
//6.将层渲染至舞台
layer.draw();
效果如下:
三、Konva 动画
1. tween 对象
使用动画时必须先实例化 Konva.tween 对象创建补间动画,然后执行 play() 运行动画;tween 是控制 Konva 对象进行动画的核心对象,它可以控制所有数字类型的属性进行动画处理,比如:x, y, rotation, width, height, radius, strokeWidth, opacity, scaleX 等。
如下是一个基本的 tween 创建动画的例子:
var tween = new Konva.Tween({
node: rect, //要使用动画的Konva对象
x: 300,
y:300,
rotation: 360, //旋转
duration: 1, //持续时间
easing: Konva.Easings.EaseIn, //动画效果
yoyo: true, //是否进行循环播放
......
onFinish: function() { //动画执行结束后,执行此方法
}
});
tween.play(); //启动动画
除用 play() 方法启动动画之外,tween 还有以下参数可供使用:
tween.play();播放动画
tween.pause();暂停动画
tween.reverse();动画逆播放
tween.reset();重置动画
tween.finish();立即结束动画
动画的效果也有多种:
Konva.Easings.Linear;线性
Konva.Easings.EaseIn;缓动,先慢后快
Konva.Easings.EaseOut;先快后慢
Konva.Easings.EaseInOut;两头慢,中间快
Konva.Easings.BackEaseIn;往回一点,然后往前冲
Konva.Easings.BackEaseOut
Konva.Easings.BackEaseInOut
Konva.Easings.ElasticEaseIn;橡皮筋
Konva.Easings.ElasticEaseOut
Konva.Easings.ElasticEaseInOut
Konva.Easings.BounceEaseIn;弹跳
Konva.Easings.BounceEaseOut
Konva.Easings.BounceEaseInOut
Konva.Easings.StrongEaseIn;强力
Konva.Easings.StrongEaseOut
Konva.Easings.StrongEaseInOut
2. 动画 to 方法的使用
在实际的开发过程中,如果每次使用动画都先实例化 Konva.tween,在 play() 启动动画,这样是很麻烦的,而且效率不高。而 Konva 也为开发者提供了更为简便的方式,那就是 to,to 其实就是对 tween 的封装。
在使用 to 时我们不必再去实例化 Konva.tween 对象,直接在需要添加动画的对象后面 .to{ } 创建相关属性即可。
如下是使用动画的两种方式对比:
效果如下:
3. 循环播放动画
循环播放主要是结合 tween 配合 onFinish 事件中的 reset()重置动画 和 play()播放动画,达到循环播放的效果。
如下简单案例:
konva动画 body {
padding: 0;
margin: 0;
background-color: bisque;
overflow: hidden;
}
//创建舞台
var stage = new Konva.Stage({
container: 'container',
width: window.innerWidth, //宽高(全屏)
height: window.innerHeight,
})
//创建层
var layer = new Konva.Layer();
//将层添加至舞台
stage.add(layer);
//创建矩形
var rect = new Konva.Rect({
x: 250,
y: 250,
width: 100,
height: 100,
fill: 'red'
});
layer.add(rect);
layer.draw();
//tween为矩形添加动画
var tween = new Konva.Tween({
node: rect, //要进行动画的Konva对象
x: 100,
y: 100,
rotation: 360, //旋转360度
opactity: .1,
easing: Konva.Easings.Linear, //动画效果
duration: 2, //持续时间
yoyo: true, //是否进行循环播放
onFinish: function () {
//动画执行结束后执行此方法
this.reset(); //重置动画
this.play(); //播放动画
}
});
tween.play(); //启动动画
效果如下:
四、案例:使用 Konva 绘制进度条
具体思路就是:绘制一个外部矩形,一个内部矩形,再为内部矩形添加动画,宽度由 0 变为外部矩形的宽度。
使用konva库制作一个进度条 body {
padding: 0;
margin: 0;
background-color: bisque;
overflow: hidden;
}
//创建舞台
var stage = new Konva.Stage({
container: 'container',
width: window.innerWidth, //宽高(全屏)
height: window.innerHeight,
})
//创建层
var layer = new Konva.Layer();
//将层添加至舞台
stage.add(layer);
//设置中心点
var centerX = stage.width() / 2;
var centerY = stage.height() / 2;
var x = 1 / 8 * stage.width();
var y = centerY;
var height = 1 / 12 * stage.height();
var maxWidth = 3 / 4 * stage.width()
//绘制进度条
//内部矩形
var innerRect = new Konva.Rect({
x: x,
y: y,
width: 100,
height: height,
opacity: 0.8, //透明度
fill: '#149985',
cornerRadius: height / 2, //圆角
});
//将内部矩形添加至层
layer.add(innerRect);
//外部矩形
var outerRect = new Konva.Rect({
x: x,
y: y,
H5画布 canvas(三)canvas 库 Konva.js 的使用
目录 一、Konva 基本概念 二、Konva 的使用 1. 引入 Konva 2. Konva 基本绘制步骤 三、Konva 动画 1. tween 对象 2. 动画 to 方法的使用 3. 循环播...
-
H5:画布Canvas基础知识讲解(三)之文字、阴影、颜色渐变
上一节介绍了H5:画布Canvas基础知识讲解(二)之插入图像、像素级操作,接下来继续讲解H5:画布Canvas基础。 文字 虽然最近的WebKit版本和Firefox 3.1 nightly bui...