PDA

Просмотр полной версии : не удаляет Интервал?


sy555
27.11.2009, 10:49
Добрый день..

Я сделал движение объекта под маской ,(типо прокрутка).. Сделал через setInterval , и не понимаю в чем ошибка .


stop();
btn1.onPress=function()
{
go_r();
};
btn2.onPress=function()
{
go_l();
};
function go_r()
{
var in1=setInterval(gogo,5);
};
function go_l()
{
var in2=setInterval(gogoss,15);
};



function gogo()
{
if(m1._x>-110)
{
m1._x=m1._x-3;
trace( m1._x);
}
else if(m1._x<-110)
{
clearInterval(in1);
}

};

function gogoss()
{
if(m1._x<200)
{
m1._x=m1._x+3;
trace( m1._x);
}
else
{
clearInterval(in2);
}

};






прикрепил исходник , он как бы заедает, т.к при нажатие кнопки назад, продолжает работу функция из кнопки вперед ... что не так? Заранее спасибо

Juice_Green
27.11.2009, 10:54
как бы при нажатии кнопки назад надо удалить интервал, вызванный нажатием кнопки вперед

mooncar
27.11.2009, 10:54
Исходник не смотрел, но возможно, ваша ошибка в том, что вы не учитываете области видимости. Интервал вы создаете внутри функции, in1 у вас локальная переменная, которая видна только внутри нее:
var in1=setInterval(gogo,5);
А стирать вы пытаетесь совсем другой (несуществующий) интервал:
clearInterval(in1);

udaaff
27.11.2009, 10:54
Переменные объявленные внутри функции, считаются локальными и видны только внутри этой функции.

Ы! Тройной ответ =)

sy555
27.11.2009, 11:15
Точно , спасибо. !

var in1:Number=new Number();
var in2:Number=new Number();
in1=1;
in2=1;
stop();
btn1.onPress=function()
{
go_r();
};
btn2.onPress=function()
{
go_l();
};
function go_r()
{
in1=setInterval(gogo,5);
};
function go_l()
{
in2=setInterval(gogoss,15);
};



function gogo()
{
if(m1._x>-110)
{
m1._x=m1._x-3;
trace( m1._x);
}
else if(m1._x<-110)
{
clearInterval(in1);
}

};

function gogoss()
{
if(m1._x<200)
{
m1._x=m1._x+3;
trace( m1._x);
}
else
{
clearInterval(in2);
}

};

jony_e
27.11.2009, 18:03
Переменные объявленные внутри функции, считаются локальными и видны только внутри этой функции.

Ы! Тройной ответ =)
а если объявлять через _global? например _global.a=1;

fessor
28.11.2009, 23:06
использовать _global для решения локальных задач считается дурным тоном, будте вежливыми ))

AlexCooper
29.11.2009, 14:42
_parent

mooncar
29.11.2009, 16:05
_parent
Автор уже решил свой вопрос и совершенно правильно.
А вот _parent внутри его функций даст undefined.