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

MyDuty 01.03.2011 13:57

Как ремувнуть мувиклип, который не был приатачен программно?
 
Как ремувнуть муви клип который не был приатачен програмно?
зарание спасибо...

Hauts 01.03.2011 15:29

Код AS1/AS2:

someMovieClip.swapDepths(someMovieClip._parent.getNextHighestDepth());
someMovieClip.removeMovieClip();

Для удаления мувиклипов, которые были созданы в среде разработки необходимо назначить глубину клипа больше 0, иначе removeMovieClip() не сработает.

Tails 01.03.2011 15:39

А в чём отличие removeMovieClip(); от unloadMovie(); ? Кроме того, что во втором не нужно беспокоиться о уровне.

Hauts 01.03.2011 15:45

Из хэлпа:
Цитата:

Removes a movie clip that was loaded by means of loadMovie() from Flash Player.
Код AS1/AS2:

var a = _root.createEmptyMovieClip("a", 1);
var b = _root.createEmptyMovieClip("b", 2);
a.removeMovieClip();
b.unloadMovie();
trace(a)
trace(b)


mooncar 01.03.2011 22:45

removeMovieClip() удаляет сам мувик, а unloadMovie() удаляет загруженный в мувик контент (загруженный либо с помощью loadMovie, либо с помощью MovieClipLoader)

Tails 01.03.2011 22:49

Значит я всю жизнь ошибался, спасибо что наставили на путь истинный :)

mooncar 01.03.2011 23:14

Hauts, ссылка, одноименная с именем самого мувика, не есть хорошо:
Код AS1/AS2:

var a = _root.createEmptyMovieClip("a", 1);
a.removeMovieClip();
trace(a)

Потому что:
Код AS1/AS2:

var a = _root.createEmptyMovieClip("a", 1);
a.removeMovieClip();
a ? trace('a существует') : trace('a не существует');//выводит "а существует"

А вот так удаляется и сам мувик, и ссылка:
Код AS1/AS2:

var a:MovieClip = _root.createEmptyMovieClip("a", 1);
a.removeMovieClip();
delete a;
a ? trace('a существует') : trace('a не существует');//выводит "а не существует"


Hauts 01.03.2011 23:18

Если "а" — мувиклип, который мы впоследствие удаляем, то что же тогда остается по ссылке "а", если ваше условие верно?

Примерно разобрался. Остается абстрактный мувиклип.

mooncar 01.03.2011 23:27

По существу - не знаю :) В теории не силен. Пустая ссылка, видимо.
Код AS1/AS2:

var a_link = _root.createEmptyMovieClip("a", 1);
a.removeMovieClip();
trace(typeof(a));
trace(typeof(a_link));

Видимо при использовании разных методов флеш использует то, что подходит.
Я обычно линки на мувики делаю, только если чересчур длинный путь.

Hauts 01.03.2011 23:37

А я стараюсь с самого начала кода записать все ссылки на мувиклипы (либо частным образом, либо в массивы) и работать уже с ними. То есть не обращаться по прямому пути, типа _root.clipsHolder.sliderBar.setPosition() и т.п. Точка ведь тоже оператор :)

Кстати, если бы можно было после removeMovieClip хранить в памяти мувиклип, который потом можно добавить назад на сцену — мы бы имели отличную "фишку" ас3. Когда-то я писал GUI с программной отрисовкой, там это было реализовано, как и добавление множества событий на onPress, например. На простом уровне, конечно, без фаз событий и т.п. Я по этой теме диплом защищал.


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

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