Skip to main content

旋转动画教程

要使用 Konva 动画一个形状的旋转,我们可以使用 Konva.Animation 创建一个新动画,并定义一个在每帧动画中修改形状旋转的函数。

在本教程中,我们将围绕左上角旋转一个蓝色矩形,围绕中心旋转一个黄色矩形,以及围绕外部点旋转一个红色矩形。

有关完整的属性和方法列表,请查看 Konva.Animation 文档

import Konva from 'konva';

const stage = new Konva.Stage({
container: 'container',
width: window.innerWidth,
height: window.innerHeight,
});

const layer = new Konva.Layer();
stage.add(layer);

// 蓝色矩形 - 围绕左上角旋转
const blueRect = new Konva.Rect({
x: 50,
y: 50,
width: 100,
height: 50,
fill: '#00D2FF',
stroke: 'black',
strokeWidth: 4,
offset: {
x: 0,
y: 0,
},
});

// 黄色矩形 - 围绕中心旋转
const yellowRect = new Konva.Rect({
x: 200,
y: 50,
width: 100,
height: 50,
fill: 'yellow',
stroke: 'black',
strokeWidth: 4,
offset: {
x: 50,
y: 25,
},
});

// 红色矩形 - 围绕形状外部点旋转
const redRect = new Konva.Rect({
x: 350,
y: 50,
width: 100,
height: 50,
fill: 'red',
stroke: 'black',
strokeWidth: 4,
offset: {
x: -50,
y: 25,
},
});

layer.add(blueRect);
layer.add(yellowRect);
layer.add(redRect);

const angularSpeed = 90;
const anim = new Konva.Animation(function(frame) {
const angleDiff = (frame.timeDiff * angularSpeed) / 1000;
blueRect.rotate(angleDiff);
yellowRect.rotate(angleDiff);
redRect.rotate(angleDiff);
}, layer);

anim.start();