Просмотр полной версии : Как очистить интервал из подобъекта?
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
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, но в таком случае я теряю контроль над итервалом, т.е. идея закючалась в том что бы при нажатии кнопки срабатывал интервал.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.