Я строю веб-приложение и есть часть, где, если кнопка нажата, эта анимация цепь будет выполняться:ExtJs 4,2 - Отмена/сбросив цепи анимации для компонента
var textReference = Ext.getCmp('splashText');
var checker = Ext.getCmp('arrow');
var img;
//for some reason, the logic is flipped
if(checker){
img = Ext.getCmp('arrow');
}
else{
console.log('checker is defined');
img = Ext.create('Ext.window.Window', {
header: false,
style: 'background-color: transparent; border-width: 0; padding: 0',
bodyStyle: 'background-color: transparent; background-image: url(graphics/arrow_1.png); background-size: 100% 100%;',
width: 70,
id: 'arrow',
height: 70,
border: false,
bodyBorder: false,
frame: false,
cls: 'noPanelBorder',
x: textReference.getBox().x - 90,
y: textReference.getBox().y - 10,
shadow: false,
});
}
img.show();
var origW = img.getBox().width,
origH = img.getBox().height,
origX = img.getBox().x,
origY = img.getBox().y;
//go down
Ext.create('Ext.fx.Anim', {
target: img,
duration: 500,
delay: 0,
from: {
x: textReference.getBox().x - 90,
y: textReference.getBox().y - 10,
},
to: {
y: origY + 180,
opacity: 1,
}
});
//bounce up 1st
Ext.create('Ext.fx.Anim', {
target: img,
duration: 500,
delay: 500,
from: {
},
to: {
y: origY + 50,
}
});
//fall down 1st
Ext.create('Ext.fx.Anim', {
target: img,
duration: 500,
delay: 1000,
from: {
},
to: {
y: origY + 180,
}
});
//bounce up 2nd
Ext.create('Ext.fx.Anim', {
target: img,
duration: 500,
delay: 1500,
from: {
},
to: {
y: origY + 100,
}
});
//fall down 2nd
Ext.create('Ext.fx.Anim', {
target: img,
duration: 500,
delay: 2000,
from: {
},
to: {
y: origY + 180,
}
});
//fade out
Ext.create('Ext.fx.Anim', {
target: img,
duration: 1000,
delay: 3500,
from: {
},
to: {
x: textReference.getBox().x - 90,
y: textReference.getBox().y - 10,
opacity: 0
}
});
Это только основные анимация, где «мяч» будет падать, а затем подпрыгивать вверх и вниз, что делает его похожим на его подпрыгивание вверх, а затем вниз дважды, прежде чем оставаться на дне, а затем исчезает.
Это хорошо работает, однако, если пользователь нажимает на кнопку снова и снова, пока предыдущая анимационная цепочка все еще оживляет, анимация будет сложной, а вычисления для позиций будут усугублены, что сделает мяч намного ниже чем нужно.
Чтобы предотвратить это, я хочу, чтобы что-то случилось, когда кнопка нажата, вся цепочка анимации сначала отменяется, затем анимация начинается сверху. Это делается для того, чтобы любая существующая анимация остановилась, а затем начнется новая последовательность.
Есть ли у кого-нибудь идеи о том, как это выполнить? Я пробовал stopAnimation()
, но ничего не происходит.