PDA

Просмотр полной версии : исчезновение объекта


zanull
28.05.2008, 22:20
добрый вечер! у меня есть 3 анимационных объекта, есть необходимость чтоб эти объекты исчезли через 10 секунд, подскажите как такое реализовать?

Роман Вадимович
29.05.2008, 00:09
var interval:Number = setInterval(this, "hide_objects", 10000);

function hide_objects()
{
mc1.removeMovieClip();
mc2.removeMovieClip();
mc3.removeMovieClip();
clearInterval(interval);
}

mc1, mc2, mc3 - Ваши анимационные объекты

Alex_beginner
29.05.2008, 13:55
Тут надо уточнить! Исчезли или были уничтожены?
Если первое то _visible = false, если второе то как у Роман Вадимовича.

iNils
29.05.2008, 17:21
А setInterval заменить на setTimeout, будет меньше проблем с отчисткой.

Vektor
30.05.2008, 04:11
Если MovieClip имеет глубину ниже 0, то он не исчезнет.
Нужно добавить
mc1.swapDepths(this.getNextHighestDepth());
//до
mc1.removeMovieClip();

MovieClip созданные на рабочем столе имеют глубину ниже 0.

Alex_beginner
01.06.2008, 11:23
Поправлю Ваш код:
mc1.swapDepths(this.getNextHighestDepth());
//до
mc1.removeMovieClip();

Мой код:

mc1.swapDepths(положительное значение глубины, на котором нет клипа)
mc1.removeMovieClip();


Vektor! Поясню, для того чтобы удалить клип вовсе необязательно дополнительно тратить время на выполнение метода this.getNextHighestDepth(). Достаточно знать значение "свободной" от клипов глубины. В противном случае, клип на "не свободной" глубине обменяется глубиной с mc1.

Удачи!

qazwsx
01.06.2008, 11:35
На самом деле просто надо было программно создавать мувики с положительной глубиной...

Alex_beginner
01.06.2008, 12:08
qazwsx! И то верно!

Wolsh
01.06.2008, 12:32
Тратить время? На три объекта? Ваш код чреват тем, от чего Вы же и предостерегаете. Геттер свободной глубины как раз и дает абсолютную гарантию, что никто не будет сброшен в нижние глубины ада)))). Использовать точные значения глубин в динамическом проекте, да с удалением/созданием клипов в большинстве случаев неразумно.

etc
01.06.2008, 12:56
Использовать точные значения глубин в динамическом проекте, да с удалением/созданием клипов в большинстве случаев неразумно.
Скорее наоборот. Каждый клип должен находиться в том месте, где ему положено, а не как повезет.

Alex_beginner
01.06.2008, 12:57
Если в Вашем проекте все просчитано, то Вы никогда не пропишите занятую глубину. Поэтому, Ваш пост не принципиален.

А насчет
сброшен в нижние глубины ада)))) Вы как всегда очень острумно подметили:D:D:taunt::taunt:
Правда, у нас нет информации, что клипы, созданные в период конструирования достигли таких глубин.

etc
01.06.2008, 13:08
Если в Вашем проекте все просчитано, то Вы никогда не пропишите занятую глубину. Поэтому, Ваш пост не принципиален.
Угу, ровно до тех пор, пока кто-нибудь не займет максимальную глубину, например те же компоненты. И на выяснение того, почему вообще нифига ничего не работает, вы потратите очень много времени.

Alex_beginner
01.06.2008, 13:19
__etc!
Вы тока что зачеркнули предыдущий свой пост!
Каждый клип должен находиться в том месте, где ему положено, а не как повезет.
Абсолютно с этим постом согласен.
Я вот за порядок. А Вы?
И потом, причем тут максимальная глубина, я ведь в коде swapDepth ставлю конкретное значение, а не this.getNextHighestDepth(). Это уважаемый Wolsh хотел использовать this.getNextHighestDepth(). А если, допустим, случайно, мы создаем клип и this.getNextHighestDepth() вернет не планируемое значение глубины. Т.е в проекте все равно должен быть математический порядок и таких случайностей также не должно быть.

qazwsx
01.06.2008, 13:27
_etc сказал что каждый клип должен быть на своем месте, но он ведь не сказал использовать getNextHightstDepth()

Alex_beginner
01.06.2008, 14:21
Я вообще-то, не указывал, что нужно использовать this.getNextHighestDepth() и __etc тоже. Указывали это Vektor и Wolsh! В каких-то случаях они правы, но постоянно использовать this.getNextHighestDepth() не взирая на особенности проекта, дело не просто неразумное, но и расточительное.
А насчет, __etc. Мы оказались на одной стороне - на стороне порядка в проекте. Просто он непонял этого. Возможно я виноват в этом.
А Вам советую посмотреть всю тему с самого начала, тогда поймете кто к чему стремился.

etc
01.06.2008, 14:26
Alex_beginner, я изначально вообще не вам отвечал :D

Alex_beginner
01.06.2008, 14:29
Млин! Извиняюсь! Я видать че то непонял!

Wolsh
01.06.2008, 14:53
Никтож не говорит что все должно просто закидываться наверх рута))))
Есть клипы-"логические диски", определяющие положения "блоков", внутри которых распределяются вложенные, что сохраняет общий порядок проекта. В случае, когда количество клипов, создаваемых в процессе работы программы, заранее неизвестно - какие здесь альтернативы? Я сам использую итератор как глубину, когда это допустимо, и точные цифры, когда создание новых клипов в блоке не предполагается. Но в топике речь шла о клипах, помещенных на сцену вручную, так что ни о каких контейнерах речь не идет. Для их удаления разумно использовать выброс на самый верх.

qazwsx
01.06.2008, 15:02
Чето сегодня всех пробило на темы о глубине:). Помойму всегда нужно хотябы примерно представлять сколько может быть клипов созданно:).

Alex_beginner
01.06.2008, 15:17
Wolsh!
Для их удаления разумно использовать выброс на самый верх.
Добавляйте уж тогда: "Когда все глубины до наивысшей уже заняты". А то получается, что для того, чтоб удалить простенький клип его обязательно, ну просто жуть как надо поместить на следующую после наивысшей глубину:)

Vektor
02.06.2008, 00:38
Тогда вопрос вдогонку, после удаления клипа, глубина остается занятой, если нет тогда о чем разговор.

Цитата:
Угу, ровно до тех пор, пока кто-нибудь не займет максимальную глубину, например те же компоненты. И на выяснение того, почему вообще нифига ничего не работает, вы потратите очень много времени.

Джоб Макар.
Самая большая глубина, которую вы можете назначить клипу без потери возможности использовать this.removeMovieClip(), равна 1 048 575.
Ну и, у вас проектики.
_______________________
Правильно заданный вопрос, дает быстрый ответ.

Wolsh
02.06.2008, 02:11
Vektor, поясняю о чем речь. Компоненты САМИ занимают самую верхнюю глубину (видимо ту что Вы указали) под свои нужды - отображение курсоров например. После этого никакой "самой верхней свободной глубины" нет. Хотя свободных глубин может быть полно. Так что если быть типа объективным, не прав ни я ни Alex_beginner. Если делать всё по-взрослому, то надо найти эту свободную глубину специальносозданной функцией. Если, конечно, есть подозрение на то что появятся злые компоненты или будет создан миллион мувиков ))))