Форум 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=118205)

solo19770701 17.11.2008 23:59

Как очистить интервал из подобъекта?
 
Хай. Есть основной фильм в конце которого задан вот этот код
Код:

carusel._alpha = 100;
stop();
function startAgain():Void
{
        this.gotoAndPlay(4);
        carusel._alpha = 0;
        meny_mc._alpha = 0;
        clearInterval(getBack);
        trace( "interval has been cleared");
};

var getBack:Number = setInterval(startAgain, 20000);

из которого видно, что после дватцати секунд фильм начнет свое проигрывание из 4го кадра. К оснвоному фильмоу путем loadMovie("carusel.swf", carusel), подгружаю другой мувик где на кнопку прописываю clearInterval(getBack). Но этот код не срабатывает. Где я сделал ошибку?

DarkLight 18.11.2008 01:05

getBack находится на уровне видимости _root, а кнопка в подгружаемом клипе находится на уровне видимости _root.carusel.имяКнопки, где переменной getBack никогда не было. Вывод - нужно указывать правильный путь к переменной в подгружаемом мувике.

solo19770701 18.11.2008 01:17

to DarkLight: а я думал, что setInterval and removeInterval глобальные функции, и не важно из какой части клипа я ее вызываю.

Т.е по твоему если я пропишу clearInterval(_root.getBack) в клипе, то все должно заработаь?

DarkLight 18.11.2008 02:17

да (кроме случая, когда подгружаемому swf принудительно установлен _lockroot = true)
setInterval является глобальной функцией в том смысле, что вызывать можно отовсюду, а вот getBack - обычная локальная переменная-число. От того, что мы скормили глобальной функции локальный аргумент, он сам глобальным не становится, что логично.

solo19770701 18.11.2008 18:48

Вложений: 1
to DarkLight: спасибо за разширенный ответ.
Нужет совет, а то у самого уже шарики за ролики заезжают. В основном фильме в конце стоит - var walkBack:Number = setInterval(goBack, 20000). В фильме есть мувик с двумя кнопками, при на жатии на btn1 происходит остановка интервала - clearInterval(_root. walkBack), а при нажатии на bnt2 должно произойти возобновление интервала. Вот здесь я и умучился. Не как не могу возобновить интервал. Не могу вызвать интервал из основной линейки walkBack при нажатии кнопки btn2, а при попытке создать второй интеварл в функции кнопки btn2 - var secondButtonInterval:Number = setInterval(goBackAgain, 20000) не могу его очистить из кнопки btn1. Проще говоря btn1 должна останавливать все интервалы, а btn2 должна возобновлять таймер.

solo19770701 20.11.2008 21:59

Всем доброго времени суток. Вобщем что я имею на данный момент:
Код:

//////// btn1

function released()
{
        //BONUS Section
        trace("released");
        clearInterval(_root.getBack);
        clearInterval(getUnReleased);
}

////// btn2

function unReleased()
{
        trace ("unReleased");
        function playAgain():Void
        {
                _root.gotoAndPlay(4);
                carusel._alpha = 0;
                meny_mc._alpha = 0;
                clearInterval(getUnReleased);
                trace( "unReleased button has been pushed");
        };
       
        var getUnReleased:Number = setInterval(playAgain, 6000);

//////////// root

carusel._alpha = 100;
stop();
function startAgain():Void
{
        _root.gotoAndPlay(4);
        carusel._alpha = 0;
        meny_mc._alpha = 0;
        clearInterval(getBack);
        trace( "interval has been cleared");
};

var getBack:Number = setInterval(startAgain, 20000);

проблемма в том что clearInterval(getUnReleased); в btn1 не работает. Как пофиксить, какие нибудь идеи. Или есть другие пути решения данной задачи?

faust.d503 21.11.2008 02:55

getUnReleased определено только внутри функции unReleased и нигде больше, значит ниоткуда кроме как из этой функции его увидеть нельзя.
определите переменную getUnReleased в другом месте.

solo19770701 21.11.2008 04:35

to faust.d503: я пытался вынести var getUnReleased:Number = setInterval(playAgain, 6000); за пределы функции кнопки btn2, но в таком случае я теряю контроль над итервалом, т.е. идея закючалась в том что бы при нажатии кнопки срабатывал интервал.


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

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