Форум 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)
-   -   не работает функция removeMovieClip (http://www.flasher.ru/forum/showthread.php?t=110165)

GalyaK 28.03.2008 11:50

не работает функция removeMovieClip
 
Добрый день! уже второй день пытаюсь "заставить" флеш удалить мувики,созданные при помощи attachMovie, но они по-прежнему на своих местах...
Здесь они создаются:
Код:

main_mc=_root.createEmptyMovieClip("menu_mc", 0);
 
function create_menu(menu_xml) {       
        var mc;
        var i = 0;
        var nod = menu_xml[i];       
        while (nod) {
                i++;
                nod = menu_xml[i];
                mc = main_mc.attachMovie(nod.attributes.klass, "m"+i+"_mc", i);
                nod.attributes.mc = mc;
                mc.i = i;
        }
};

а здесь я пытаюсь их удалить-чтобы их не было на экране:
Код:

function clear_window (my_xml){       
        var node=my_xml.firstChild;
        while(node){
        for (l=0;node.childNodes[l];l++){
                  removeMovieClip(node.childNodes[l].attributes.mc);
        }
                node=node.nextNode();
        }
}

трейсом проверяю ссылки на клипы-вроде бы все они прописаны в соответствующем атрибуте узла xml, но тем не менее они не удаляются, в чем может быть ошибка?

Obi 28.03.2008 12:16

Код:

main_mc=_root.createEmptyMovieClip("menu_mc", 0);
var mcArray:Array = new Array();
function create_menu(menu_xml):Void {       
        var mc;
        var i = 0;
        var nod = menu_xml[i];       
        while (nod) {
                i++;
                nod = menu_xml[i];
                mc = main_mc.attachMovie(nod.attributes.klass, "m"+i+"_mc", i);
                mcArray.push(mc);
                mc.i = i;
        }
};


function clear_window ():Void{       
        for(var i:Number = 0; i < mcArray.length; i++) {
            removeMovieClip(mcArray[i]);
            mcArray.splice(i, 1)
        }
}


iNils 28.03.2008 12:19

node.childNodes[l].attributes.mc - это строковое значение, а не ссылка на клип.

GalyaK 28.03.2008 23:42

Цитата:

Сообщение от iNils
node.childNodes[l].attributes.mc - это строковое значение, а не ссылка на клип.

а как же в таком случае получить или сохранить ссылку на клип? ведь свойства _target и name тоже не катят

2 Obi: спасибо, но вариант с массивом тоже не работает

Molecula 28.03.2008 23:48

mc - у Вас и была ссылка, всё правильно, но Вы же объвили её в пределах функции, т.е. она Локальная. Маша не видит Сашу, бо они в разных городах.
Так надо удалять:
Код:

removeMovieClip(mc);
Obi предложил удалять с помощью массива, который набит ссылками на мувики. Массив виден из любой функции, так что - тут нет проблем.

GalyaK 29.03.2008 00:08

да-да,спасибо, Molecula, я уже поняла, что массив набит ссылками, вот только мой flash mx этого не догнал: в массиве удаляет сами элементы функцией split как-то криво: перескакивает через некоторые и идут они там не по порядку. а клипы как висели, так и висят-они почему-то не хотят удаляться. ладно, буду тестить снова и снова, спасибо за помощь

Molecula 29.03.2008 00:14

Причем тут split ?.. эти вещи касаются массивов, а не мувиклипов.
Код:

removeMovieClip(mcArray[i])
Удалит тот мувиклип, на который ссылается элемент массива.

GalyaK 02.04.2008 12:51

и действительно,причем тут split, когда это вовсе даже и splice) но в коде у меня правильно написано. я про то что ссылки на мувиклипы из массива не удаляются.
и
Код:

removeMovieClip(mcArray[i])
не удаляет нужный мувиклип

crc 02.04.2008 13:18

Код:

removeMovieClip(main_mc["m"+ i +"_mc"]);


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

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