"Я пытаюсь выяснить, как удалить существующего дочернего элемента каждого держателя, поскольку, если нет, все эти изображения будут складываться вместе"
Да, когдавы addChild
это все равно что сказать Флешу "paste this on a new layer inside the target"
.Каждый слой называется уровнем глубины.Вы можете получить доступ к определенному слою / глубине, используя getChildAt(x)
, где x
- номер слоя (первый = 0
, второй = 1
, третий = 2
и т. Д.)
Пример:
Скажем, у вас есть один держатель ( например: holder_1
) для показа всех изображений.
1) В первый раз вы добавите создание изображения, используя holder_1.addChild(pic1);
, поэтому теперь pic1
существует в (слое) уровне 0 внутри целиholder_1
.
2) Добавление второго изображения с holder_1.addChild(pic2);
, так что теперь pic2
существует в (слое) уровне 1 внутри целиholder_1
.
Теперь два изображения накладываются на разные слои внутри одного контейнера.Как исправить?Рассмотрим следующую логику:
holder_1.addChild(pic2); //add pic2 into holder (at level 0)
holder_1.removeChildAt(0); //remove anything at level 0 (...is pic2)
holder_1.addChild(pic1); //add different pic1 into holder (at level 0)
Ваш код может попробовать что-то вроде этого:
holder_1 = new MovieClip();
holder_2 = new MovieClip();
holder_3 = new MovieClip();
holder_1.x = 37.6; holder_2.x = 458.55;
//# give multiple VARS the same value
holder_1.y = holder_2.y = 133.05;
stage.addChild(holder_1);
stage.addChild(holder_2);
btnoppo.addEventListener(MouseEvent.CLICK,showOppo);
btnsamsung.addEventListener(MouseEvent.CLICK,showsamsung);
function showOppo (e:Event):void
{
//# set multiple at once to value = 1
Of9.scaleX = Of9.scaleY = Ofx.scaleX = Ofx.scaleY = 1;
//# check if already has image & remove it
if(holder_1.getChildAt(0) != null) { holder_1.removeChildAt(0); }
if(holder_2.getChildAt(0) != null) { holder_2.removeChildAt(0); }
holder_1.addChild(Of9); holder_2.addChild(Ofx);
}
function showsamsung (e:Event):void
{
Sgn9.scaleX = Sgn9.scaleY = Ss10.scaleX = Ss10.scaleY = 1;
//# check if already has image & remove it
if(holder_1.getChildAt(0) != null) { holder_1.removeChildAt(0); }
if(holder_2.getChildAt(0) != null) { holder_2.removeChildAt(0); }
holder_1.addChild(Sgn9); holder_2.addChild(Ss10);
}