Отмените SetInterval () до завершения таймера

У меня есть ряд кнопок, которые запускают всплывающее окно с помощью SetInterval () через 500 миллисекунд в прослушивателе MouseEvent.ROLL_OVER.

Однако, если пользователь откатывает кнопку до истечения 500 миллисекунд, я хочу отменить таймер SetInterval (). В противном случае таймер продолжит работу и покажет всплывающее окно в неподходящее время.

Как мне отменить таймер SetInterval ()?

Мой базовый код для функции ролловера и развертывания выглядит следующим образом:

    function btn_over(event:MouseEvent) {
        var timer = setInterval ( function () {

            hover_bubble.x = itemX + itemW + 10;
            hover_bubble.y = itemY + 30;

            hover_bubble.gotoAndStop('max');
            clearInterval(timer);

        }, 500);
    }


    function btn_out(event:MouseEvent) {
        //something here to stop the "timer" 

        event.target.gotoAndPlay('out');
        hover_bubble.gotoAndStop(1);
    }

person ImageMagician    schedule 22.07.2013    source источник


Ответы (1)


Попробуй это:

var timer:uint;
function btn_over(event:MouseEvent) {
        timer = setInterval ( function () {

            hover_bubble.x = itemX + itemW + 10;
            hover_bubble.y = itemY + 30;

            hover_bubble.gotoAndStop('max');
            clearInterval(timer);

        }, 500);
    }


function btn_out(event:MouseEvent) {

    clearInterval(timer);

    event.target.gotoAndPlay('out');
    hover_bubble.gotoAndStop(1);
}
person bitmapdata.com    schedule 22.07.2013
comment
Идеально. Спасибо! Я не думал создавать переменную вне функции, но установив интервал внутри нее, можно было бы очистить таким образом. Это сработало отлично. - person ImageMagician; 23.07.2013