page: 📄 common Easings
This commit is contained in:
parent
1fd9d75928
commit
fbf929cc81
|
@ -1,5 +1,4 @@
|
|||
```sh
|
||||
https://konvajs.org/docs/tweens/Common_Easings.html
|
||||
https://konvajs.org/docs/tweens/All_Easings.html
|
||||
https://konvajs.org/docs/tweens/All_Controls.html
|
||||
https://konvajs.org/docs/tweens/Tween_Filter.html
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
<script setup lang="ts">
|
||||
import { useWindowSize } from '@vueuse/core';
|
||||
import { onMounted } from 'vue';
|
||||
import Konva from 'konva/lib';
|
||||
|
||||
const { width, height } = useWindowSize();
|
||||
|
||||
const initial = () => {
|
||||
const stage = new Konva.Stage({ container: 'container', width: width.value, height: height.value });
|
||||
stage.draggable(true);
|
||||
const layer = new Konva.Layer();
|
||||
stage.add(layer);
|
||||
|
||||
const greenBox = new Konva.Rect({
|
||||
x: 70,
|
||||
y: stage.height() / 2,
|
||||
width: 100,
|
||||
height: 50,
|
||||
fill: 'green',
|
||||
stroke: 'black',
|
||||
strokeWidth: 4,
|
||||
offset: {
|
||||
x: 50,
|
||||
y: 25,
|
||||
},
|
||||
});
|
||||
|
||||
const blueBox = new Konva.Rect({
|
||||
x: 190,
|
||||
y: stage.height() / 2,
|
||||
width: 100,
|
||||
height: 50,
|
||||
fill: 'blue',
|
||||
stroke: 'black',
|
||||
strokeWidth: 4,
|
||||
offset: {
|
||||
x: 50,
|
||||
y: 25,
|
||||
},
|
||||
});
|
||||
|
||||
const redBox = new Konva.Rect({
|
||||
x: 310,
|
||||
y: stage.height() / 2,
|
||||
width: 100,
|
||||
height: 50,
|
||||
fill: 'red',
|
||||
stroke: 'black',
|
||||
strokeWidth: 4,
|
||||
offset: {
|
||||
x: 50,
|
||||
y: 25,
|
||||
},
|
||||
});
|
||||
layer.add(greenBox);
|
||||
layer.add(blueBox);
|
||||
layer.add(redBox);
|
||||
|
||||
// the tween has to be created after the node has been added to the layer
|
||||
greenBox.tween = new Konva.Tween({
|
||||
node: greenBox,
|
||||
scaleX: 2,
|
||||
scaleY: 1.5,
|
||||
easing: Konva.Easings.EaseIn,
|
||||
duration: 1,
|
||||
});
|
||||
|
||||
blueBox.tween = new Konva.Tween({
|
||||
node: blueBox,
|
||||
scaleX: 2,
|
||||
scaleY: 1.5,
|
||||
easing: Konva.Easings.EaseInOut,
|
||||
duration: 1,
|
||||
});
|
||||
|
||||
redBox.tween = new Konva.Tween({
|
||||
node: redBox,
|
||||
scaleX: 2,
|
||||
scaleY: 1.5,
|
||||
easing: Konva.Easings.EaseOut,
|
||||
duration: 1,
|
||||
});
|
||||
|
||||
// use event delegation
|
||||
layer.on('mouseover touchstart', function (evt) {
|
||||
evt.target.tween.play();
|
||||
});
|
||||
|
||||
layer.on('mouseout touchend', function (evt) {
|
||||
evt.target.tween.reverse();
|
||||
});
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
initial();
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div id="container"></div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss"></style>
|
Loading…
Reference in New Issue