Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отмена выполнения ф-ии (https://javascript.ru/forum/dom-window/39611-otmena-vypolneniya-f-ii.html)

hoax 06.07.2013 20:26

???

block.onmouseover = function () {

if (block.busy) return;
block.busy = true;

animateProp({start:0, end: -20, prop:'marginTop', duration:500, elem:logo}, block.busy = false)


}

рони 06.07.2013 20:43

Цитата:

Сообщение от hoax
animateProp

я незнаю как устроена ваша функция animateProp поэтому незнаю правильно или нет вы разместили параметр -- block.busy = false - возможно так function ()
{
block.busy = false
}

Цитата:

Сообщение от hoax
animateProp({start:0, end: -20, prop:'marginTop', duration:500, elem:logo},function ()
{
block.busy = false
}
)


hoax 06.07.2013 22:25

function animateProp(opts) {

var start = opts.start, end = opts.end, prop = opts.prop;

opts.step = function(progress) {
opts.elem.style[prop] = (end - start) * progress + start+'px'
}

return animate(opts);


}




var logo = document.getElementById('logo');

logo.onmouseover = function () {

if (logo.busy) return;
logo.busy = true;


animateProp({start:0, end: -20, prop:'marginTop', duration:500, elem:logo},function() {
logo.busy = false;
 })


}

logo.onmouseout = function () {

if (logo.busy) return;
logo.busy = true;


animateProp({start:-20, end: 0, prop:'marginTop', duration:500, elem:logo},function() {
logo.busy = false;
 })


}


работает только при onmouseover

рони 06.07.2013 22:54

hoax,
если вы знаите где останавливается ваша анимация туда и ставте logo.busy = false -- в вашем коде я не вижу остановки анимации.

danik.js 07.07.2013 11:58

В jQuery это делается просто: $(el).stop().animate(..) и анимация срабатывает без всяких задержек, то есть не накапливается.
А тут какой-то велосипед animateProp, хз как тут такое сделать. Неясно зачем писать велосипедный код, который уже есть в jQuery и каждая собака умеет пользоваться этой либой.


Часовой пояс GMT +3, время: 06:09.