Ответ 1
Не заходя слишком глубоко в свой плагин, вы можете просто повторно использовать свой метод css3animate
, используя текущие (рассчитанные) значения для реквизита, которые вы хотите, и установить длительность 0 (1 в вашем плагине, так как вы используете !speed
, чтобы использовать значение по умолчанию..)
поэтому в примере с помощью
var $animated = $('div');
$animated.css3animate({"height": $animated.css('height'), "width": $animated.css('width')}, 1);
сделает трюк.
пример http://jsfiddle.net/T5LVX/1/
Конечно, вы должны автоматизировать это для использования существующих свойств. Если вы используете таймер при запуске анимации и один, когда кто-то использует метод остановки, вы также можете имитировать функциональность паузы/возобновления.
Обновление
Вы можете сохранить cssObject
, переданный анимации, в элемент data
элемента, и в течение цикла остановки через них, чтобы получить текущие значения.
Итак, в вашем методе animation
вы могли бы $obj.data('animationCss', cssObject);
и в методе stop
stop : function( clearQueue,jumpToEnd ){
return this.each(function(){
var $that = $(this);
var currentCss = {};
var animationCss = $that.data('animationCss');
for (var prop in animationCss)
currentCss[prop] = $that.css(prop);
if (jumpToEnd)
{
animation($that,currentCss,1, function(){animation($that,animationCss,1)});
}
else
{
animation($that,currentCss,1);
}
console.log("stop was called");
});
}
example: http://jsfiddle.net/T5LVX/6/