Flex - ArgumentError: Ошибка № 2025: указанный DisplayObject должен быть дочерним по отношению к вызывающей стороне при использовании добавленного файла SWC - PullRequest
1 голос
/ 24 ноября 2011

Я знаю, что уже было задано так много вопросов по этой теме ошибки # 2025.

Но, в моем случае, это происходит при попытке использовать файл .swc в проекте flex.

Я пытаюсь использовать один из моих библиотечных проектов в другом проекте Flex, добавив файл "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>

StackTrace:

ArgumentError: Ошибка # 2025: предоставленный объект DisplayObject должен быть дочерним звонящего. в flash.display :: DisplayObjectContainer / getChildIndex () в mx.managers :: SystemManager / getChildIndex () [C: \ автосборки \ 3.x \ рамки \ проекты \ рамки \ SRC \ тх \ менеджеры \ SystemManager.as: 1772] в mx.managers :: SystemManager / mouseDownHandler () [C: \ автосборки \ 3.x \ рамки \ проекты \ рамки \ SRC \ тх \ менеджеры \ 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 ]

2 голосов
/ 24 ноября 2011

Вам действительно нужно Application? Application должен быть только верхним и основным классом. Возможные решения:

  1. Используйте другой контейнер (например, Canvas).
  2. Скомпилируйте приложение Main.mxml в swf и затем загрузите его с Loader class.

Я бы предпочел использовать 1-й вариант.

0 голосов
/ 24 ноября 2011

Могу поспорить, что вы не проверяете, является ли (вы думаете, дочерний) объект действительно дочерним по отношению к (вы думаете, родительским) объектом

Положите if туда вроде:

if(parentObj.getChildren().indexOf(childObj) >= 0) {
    parentObj.removeChild(childObj);
} else {
    //whatever error logging you do goes here
}
...