PDA

Просмотр полной версии : removeChild не удаляет анимированные мувики


dimetradim
20.12.2011, 23:52
Мувики подгружаю из библиотеки, на статичных мувиках всё работает на анимированных не происходит удаления. Почему так?

btn_zvezda.addEventListener(MouseEvent.CLICK, Click_zvezda);
function Click_zvezda(event:MouseEvent):void {
var add_object:zvezda = new zvezda();
addListeners(add_object);
}
//==================добавление===================
function addListeners(add_object:DisplayObject) {
add_object.x = Math.random() * (stage.stageWidth - add_object.width);
add_object.y = Math.random() * (stage.stageHeight - add_object.height);
addChild(add_object);

//====================удаление===================
add_object.doubleClickEnabled = true;
add_object.addEventListener(MouseEvent.DOUBLE_CLICK, Del);
function Del(event:MouseEvent):void
{
add_object.parent.removeChild(add_object);
}
//================перетаскивание==================
add_object.addEventListener(MouseEvent.MOUSE_DOWN, Drag);
function Drag(event:MouseEvent):void
{
add_object.startDrag();
}
stage.addEventListener(MouseEvent.MOUSE_UP, Drop);
function Drop(event:MouseEvent):void
{
add_object.stopDrag();
}
}

Genzo
20.12.2011, 23:54
removeChild(add_object); а не add_object.parent.removeChild(add_object);

dimetradim
21.12.2011, 00:17
Не помогает! та же история работает только в случае с статичными мувиками. анимация не удаляется

GBee
21.12.2011, 00:25
add_object.mouseChildren = false;
Попробуйте и можно


removeChild(event.currentTarget as DisplayObject);

Что то не пойму что у вас где начинается и заканчивается.

fish_r
21.12.2011, 00:25
Мувики подгружаю из библиотеки, на статичных мувиках всё работает на анимированных не происходит удаления. Почему так?

вынесите функ. Del из метода, оформите отдельным методом

Добавлено через 56 секунд
...

На самом деле разницы ни какой

GBee
21.12.2011, 00:29
На самом деле разницы ни какой
Это не эстетично!

add_object.parent.removeChildAt(add_object.parent.getChildIndex(add_object));

fish_r
21.12.2011, 00:30
или stopDrag прописать в Del

Добавлено через 2 минуты
Это не эстетично!


Может быть. Но я иногда делаю и так, когда объект не актуален и всем всё равно есть он или нет )

dimetradim
21.12.2011, 00:45
Либо я что то не понял либо всё выше перечисленное тоже не помогает.

-De-
21.12.2011, 00:47
У вас функция Del вызывается-то? А то может там попасть даблкликом тяжело или мыша отключена. Трейс в ней поставьте, что-ли.

dimetradim
21.12.2011, 00:55
Всё вызывается! Я ж говорю обычные мувики она удаляет, но есть парочка в который внутри на таймлайне анимация их не берет! Полтергейст какой то!

-De-
21.12.2011, 01:03
Ну вот неочевидно, что для тех двух она вызывается. Если её изменить как ниже, то что выведет?
function Del(event:MouseEvent):void
{
add_object.parent.removeChild(add_object);
trace("add_object.parent = "+add_object.parent);
}

dimetradim
21.12.2011, 01:09
Понял истиную причину! Трабл касается только тех чилдренов которые содержат в себе тот самый анимированный мувик. Он кстати тоже является экспортируемым на сцену. И тоже не удаляется. Все другие мувики (не содержащие в себе экспортируемых мувиков) при добавлении анимации удаляются исправно.

Добавлено через 13 минут
Понял что не удаляются те мувики внутри которых есть мувики прописаные для экспорта на сцену. Как это побороть?

fish_r
21.12.2011, 02:08
function Del(event:MouseEvent):void
{
var removedObject:DisplayObject = DisplayObject( e.target );
removedObject.parent.removeChild( removedObject );
}


Что то такое пробовали?

Mur4ik
21.12.2011, 02:18
Можно еще долго дискуссировать о причинах баги или о красивости и правильности кода ...
Но было бы куда проще помогать имея наглядный пример, соберите маленький пример в архив, да с исходниками, прикрепите к первому посту, и решение найдется куда быстрее.

Genzo
21.12.2011, 11:22
Может :

add_object. mouseChildren = false;
add_object.addEventListener(MouseEvent.DOUBLE_CLICK, Del , false , 0 , true);

Vektor
21.12.2011, 15:13
Помнится, в далеком-далеком прошлом у меня тоже были похожие проблемы, решение нашлось переводом клипа на первый кадр, а потом он удалялся.
З.Ы - может, вру, давно это было, всё покрыто мраком.