У меня есть следующий код, который должен масштабировать фигуру при наведении курсора мыши, а затем масштабировать ее до исходного размера на мыши. У меня есть несколько проблем:Как создать анимацию масштабирования в Kinetic.js?
- Как изменить масштаб?
- Как завершить анимацию за определенное время?
- Как сделать 1 и 2 без возникновения сбоев.
- Когда указатель мыши быстро проходит по форме, некоторые кадры внезапно перескакивают. Как это исправить?
Все, что мне нужно, это форма, которая становится медленнее, когда она затуманивается, а затем возвращается к исходному размеру, когда мышь отсутствует.
<div id="container"></div>
<script src="js/kinetic.min.js" charset="utf-8"></script>
<script defer="defer" type="text/javascript">
function zoomHex() {
}
var stage = new Kinetic.Stage({
container: 'container',
width: 500,
height: 500
});
var shapesLayer = new Kinetic.Layer();
var hex = new Kinetic.RegularPolygon({
x: 250,
y: 250,
sides: 6,
radius: 80,
fill: '#00D2FF',
stroke: '#00D2FF',
strokeWidth: 30,
lineJoin: 'round'
});
var zoomIn = new Kinetic.Animation(function(frame) {
var period = 1000;
var duration = 1000;
zoomAmount = 1;
var scale =frame.time/period;
hex.setScale(frame.time/period + zoomAmount);
if(frame.time > duration) {
zoomIn.stop();
this.frame.time = 0;
}
}, shapesLayer);
var zoomOut = new Kinetic.Animation(function(frame) {
var period = 1000;
var duration = 1000;
zoomAmount = 2;
hex.setScale(frame.time/period - zoomAmount);
if(frame.time > duration) {
zoomOut.stop();
this.frame.time = 0;
}
}, shapesLayer);
hex.on('mouseover', function() {
zoomIn.start();
//zoomIn.stop();
});
hex.on('mouseleave', function() {
zoomOut.start();
//zoomOut.stop();
});
shapesLayer.add(hex);
stage.add(shapesLayer);
</script>