Flex - ArgumentError: Ошибка № 2025: указанный DisplayObject должен быть дочерним элементом вызывающей стороны при использовании добавленного файла SWC
Я знаю, уже так много вопросов было задано здесь по этой теме ошибки #2025.
Но, в моем случае, это происходит при попытке использовать .swc
файл в гибком проекте.
Я пытаюсь использовать один из моих библиотечных проектов в другой гибкий проект, добавив с помощью "Add swc
файл. Я успешно добавил его в свой новый проект как .swc
файл.
Но, когда я пытаюсь использовать его в новом проекте, нажав на приложение в браузере, он показывает мне эту ошибку во время выполнения. Ниже приведен основной файл моего нового проекта.
NewSample.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:swclib="*"
layout="absolute">
<swclib:Main width="100%" height="100%"/>
</mx:Application>
Трассировки стека:
ArgumentError: Ошибка № 2025: предоставленный объект DisplayObject должен быть дочерним по отношению к вызывающей стороне. в flash.display::DisplayObjectContainer/getChildIndex() в mx.managers::SystemManager/getChildIndex()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\ Manager \SystemManager.as:1772] в mx.managers::SystemManager/mouseDownHandler()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\ Manager \SystemManager.as:3615]
Я не могу определить причину ошибки?
РЕДАКТИРОВАТЬ: это основной файл приложения .swc
файл библиотеки.
Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:parsley="http://www.spicefactory.org/parsley"
minWidth="955" minHeight="600"
xmlns:custom="components.*"
horizontalScrollPolicy="off"
layout="vertical"
verticalScrollPolicy="off" xmlns:models="models.*" xmlns:views="views.*">
<views:Header width="100%" height="50"/>
<mx:HDividedBox id="hdv" width="100%" height="100%">
<views:ABC width="15%" height="100%"/>
<views:DEF width="65%" height="100%"/>
<views:XYZ width="20%" height="100%"/>
</mx:HDividedBox>
<parsley:ContextBuilder config="Conf"/>
</mx:Application>
2 ответа
Вы действительно нуждаетесь Application
? Application
должен быть только верхний и основной класс. Возможные решения:
- Используйте другой контейнер (например,
Canvas
). - Скомпилируйте приложение Main.mxml в swf, а затем загрузите его с помощью класса Loader.
Я бы предпочел использовать 1-й вариант.
Могу поспорить, что вы не проверяете, является ли объект (вы думаете дочерним) на самом деле дочерним (по вашему мнению родительским) объектом
Положить if
там вроде:
if(parentObj.getChildren().indexOf(childObj) >= 0) {
parentObj.removeChild(childObj);
} else {
//whatever error logging you do goes here
}