美文网首页
1 Konva大纲

1 Konva大纲

作者: 波拉拉 | 来源:发表于2021-01-23 01:01 被阅读0次
image.png

最简单的一个例子

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="container"></div>
<script src="konva.js"></script>
<script>
//    创建stage
    var stage=new Konva.Stage({
        container:'container',//id值
        width:500,height:500
    });

//    创建图层
    var layer=new Konva.Layer();

//    创建形状
    var circle=new Konva.Circle({
        x:200,y:200,
        radius:70,fill:'red',stroke:'black',strokeWidth:4
    });
//    形状添加到图层
    layer.add(circle);
//    图层添加到画布
    stage.add(layer);
//    显示
    layer.draw();
</script>
</body>
</html>
image.png

基本形状

矩形,圆,椭圆,直线,多边形,曲线,不规则图形,图片,文字等

样式

填充`纯色、渐变色或图像
描边(颜色、宽度)
阴影(颜色、偏移、不透明度、模糊)
不透明度

事件

Konva支持mouseover、mouseout、mouseenter、mouseleave、mousemove、mousedown、mouseup、wheel、click、dblclick、dragstart、dragmove和dragend桌面事件。
用户事件 click, dblclick, mouseover, tap, dbltap, touchstart etc

    circle.on('mouseout',function () {
        console.log("mouseout")
    })

拖放

shape.draggable('true');
开启拖放

circle.draggable('true');

滤镜

动画

1 通过Konva.Animation
    var anim = new Konva.Animation(function(frame) {
        circle.x(
            100 * Math.sin((frame.time * 2 * Math.PI) / 2000) + 100
        );
    }, layer);
    anim.start();
1 通过Konva.Tween
 var tween = new Konva.Tween({
        node: circle,
        duration: 1,
        x: 140,
        opacity: 1,
        strokeWidth: 6
    });
    tween.play();

简写形式

   circle.to({
        duration : 1,
        fill : 'green'
    })

选择器

find()或者findOne()

var circle = new Konva.Circle({
        radius: 10,
        fill: 'red',
        id : 'face',
        name : 'red circle'
});
layer.add(circle);

// 按类型寻找
layer.find('Circle'); // all circles

// 按id寻找
layer.findOne('#face');

// 按name寻找
layer.find('.red')

序列化和反序列化

性能

相关文章

网友评论

      本文标题:1 Konva大纲

      本文链接:https://www.haomeiwen.com/subject/eglyzktx.html