2015-03-13 12 views
0

Я довольно новичок в Flex и у меня проблема, когда у меня есть основная программа Flex (назовем ее «Parent.swf»), пытаясь загрузить другое приложение Flex (Child.swf) через класс/компонент SWFLoader. Окружающая среда Flex 4.6 на FlashDevelop.Flex mx: SWFLoader Loads Неверный SWF-файл

Похоже, что вызов работает корректно (т. Е. Не возвращаются ошибки ввода-вывода или песочницы), только, похоже, что перезагрузка «Parent.swf» в SWFLoader вместо «Child.swf».

К примеру, у меня есть Parent.swf содержащий:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      initialize="doStartup()" 
      width="1024" height="768"> 

... 

<fx:Script> 

    <![CDATA[ 

     private function doStartup():void 
     { 
      trace("STARTING UP!"); 
     } 

     .... 

    ]]> 

</fx:Script> 

<mx:VBox top="10" left="10" width="100%" horizontalAlign="center"> 
    <mx:Label text="I'M A LOADER!" /> 
</mx:VBox> 
<mx:VBox top="10" left="10" width="100%" horizontalAlign="center"> 
    <mx:SWFLoader 
        id="pluginLoader" 
        source="plugins/Child.swf" 

        autoLoad="true" 
        height="400" width="400" 
        complete="onPluginLoaded(event);" 
        ioError="onPluginLoadError(event);" 
        securityError="onPluginSecurityError(event);" 

        httpStatus="onHttpStatus(event);" 
        init="onInit(event);" 
        open="onOpen(event);" 
        progress="onProgress(event);" 
        unload="onUnload(event);" 
        /> 
</mx:VBox> 

.... 

Ребенок швейцарских франков содержит:

.... 
<mx:Label text="I'M A PLUGIN!" /> 
.... 

Трассировка выше, повторяется на нагрузке (т.е. "запускаясь!") из Child.swf, а затем еще одна попытка загрузить Child.swf, которая не работает, потому что рабочий каталог для вызова теперь находится в каталоге «plugins». Так что, похоже, файл существует и загружает его, но как-то своп в Parent.swf поверх него. Обратите внимание, что если я выполняю Child.swf напрямую, я могу проверить, что это то, что я ожидаю от него (т. Е. Приложение flex с одним ярлыком «I« PLUGIN! »).

Я также пробовал различные другие подходы, такие как создание SWFLoader через код, но та же проблема возникает. Я даже пытался переключиться на Модули, но там тоже было такое же поведение. Не удается выполнить локальную работу или запустить через веб-сервер.

Кто-нибудь знает, как это могло произойти? Есть ли способ, которым main.mxml Parent.swf переопределяет Child.swf? (Извините за эссе)

ответ

0

файл MXML должна называться по-разному в загруженных приложениях

0

Мне нужен полный код для обнаружения. Но я могу предложить две идеи:

  1. Проверьте onPluginLoaded функцию, она может быть вызвана Материнской вместо ребенка

  2. Проверьте, если у вас нет какой-либо класс или имя объекта повторяется то может генерироваться перекрестная ссылка. Например, оба родителя и ребенка используют MyScrollbarClass. Поскольку этот класс был впервые загружен Родителя, она будет создавать новое имя, когда нагрузка на ребенка, как MyScrollbarClass_1

+0

Gaah, я чувствую себя идиотом. Это было похоже на ваш второй пункт ... оба приложения использовали main как имя файла mxml. Если я изменю одно из них на другое имя, тогда все будет хорошо! Cheers Харрисон. – user4667964

 Смежные вопросы

  • Нет связанных вопросов^_^