Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   не удаляет Интервал? (http://www.flasher.ru/forum/showthread.php?t=133104)

sy555 27.11.2009 10:49

не удаляет Интервал?
 
Вложений: 1
Добрый день..

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

Код AS1/AS2:

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 у вас локальная переменная, которая видна только внутри нее:
Код AS1/AS2:

var in1=setInterval(gogo,5);

А стирать вы пытаетесь совсем другой (несуществующий) интервал:
Код AS1/AS2:

clearInterval(in1);


udaaff 27.11.2009 10:54

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

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

sy555 27.11.2009 11:15

Точно , спасибо. !
Код AS1/AS2:

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

Цитата:

Сообщение от udaaff (Сообщение 868595)
Переменные объявленные внутри функции, считаются локальными и видны только внутри этой функции.

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

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

fessor 28.11.2009 23:06

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

AlexCooper 29.11.2009 14:42

Код AS1/AS2:

_parent


mooncar 29.11.2009 16:05

Цитата:

Сообщение от AlexCooper (Сообщение 868990)
Код AS1/AS2:

_parent


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


Часовой пояс GMT +4, время: 12:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.