АргументОшибка:Ошибка № 2025:Предоставленный DisplayObject должен быть дочерним элементом ошибки вызывающего абонента – AS
-
21-09-2019 - |
Вопрос
У меня есть этот фрагмент кода внутри функции, которая проверяет, существует ли объект на сцене, и удаляет его:
public function closeContent(e:MouseEvent):void {
removeChild(txt);
removeChild(ldr.content);
removeChild(_closeButton);
container_mc.visible = false;
statusText.text="";
if (contains(submitButton)) {
removeChild(submitButton);
}
if (contains(saveinfoButton)) {
removeChild(saveinfoButton);
}
}
Я пытался изменить stage
с this
и root
но всегда получаю эту ошибку ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller
Решение
Ошибка сигнализирует о том, что вы пытаетесь удалить DisplayObject
с removeChild
это видимо не дитя DisplayObjectContainer
этот код выполняется из.
Один из способов решения этой проблемы — проверить, является ли объект, который вы пытаетесь удалить, на самом деле дочерним элементом контейнера, используя contains
.Вы делаете это для некоторых удаляемых объектов (submitButton
и saveinfoButton
), но не для некоторых других.
Попробуйте обернуть removeChild
призывает txt
, ldr.content
и _closeButton
в операторах if, которые используют contains
чтобы проверить, являются ли эти DisplayObject
находятся в контейнере.
Другие советы
Попробуйте с:
e.currentTarget.parent.removeChild(txt);
e.currentTarget.parent.removeChild(ldr.content)
etc.
Попробуй это:
public function closeContent(e:MouseEvent):void {
removeChild(txt);
removeChild(ldr.content);
removeChild(_closeButton);
container_mc.visible = false;
statusText.text="";
if (contains(submitButton)) {
removeChild(submitButton);
removeChild(saveinfoButton);
}
}
Вы можете добавить оба элемента для удаления в условии с помощью &&:
if (contains(submitButton && saveinfoButton)) {