konva实现图片剪切 旋转 镜像 翻转

SK提示知识点:

1.konva 的使用
2.偏移点
3.Konva.Group 切图
4.Animation 动画
5.Konva.Image 使用
6.旋转, 剪切, 镜像, 翻转

var group = new Konva.Group({ clipFunc: function(ctx) { ctx.arc(x0, y0, radius, 0, Math.PI * 2, false); draggable: true layer.add(group); //4.创建演员 图片 var img = new Image(); img.src = 'images/hero.jpg'; //5.图片加载完后 img.onload = function () { var kImage = new Konva.Image({ image:img, x:x0, y:y0, width:img.width, height:img.height, offsetX:img.width * 0.5, offsetY:img.height * 0.5 // offset的设置是使得围绕中心旋转 /* offset:{ x: img.width/2, y: img.height/2 //添加到组 group.add(kImage); //6.开启动画 //6.1 旋转 //每秒转60度 var rotateAnglePerSecond = 60; var anim = new Konva.Animation(function (frame) { //上一帧到当前帧的时间差 ms -->s var timeDiff = frame.timeDiff /1000;//距离上一帧的时间差 //一帧转多少度 var rotateAngle = timeDiff * rotateAnglePerSecond; kImage.rotate(rotateAngle); }, layer); //开启动画 anim.start(); //------------------------------------ var img2 = new Image(); img2.src = 'images/chopper.png'; //5.图片加载完后 img2.onload = function () { var kImage2 = new Konva.Image({ image:img2, x:200, y:200, width:img2.width, height:img2.height, offsetX:img2.width * 0.5, offsetY:img2.height * 0.5 // offset的设置是使得围绕中心旋转 /* offset:{ x: img.width/2, y: img.height/2 //添加到层 layer.add(kImage2); //6.开启动画 //6.2 左右镜像 和 上下翻转 var scale = 1; //缩放 var starTime = -1000;//触发事件 var anim = new Konva.Animation(function (frame) { //判断是否过了1s if (frame.time - starTime < 1000){ return false; starTime = frame.time; //左右镜像 scale *=-1; kImage2.scale({x:scale, y:1}); //上下翻转 // kImage2.scale({x:1, y:scale}); }, layer); //开启动画 anim.start(); </script>