Использование FlexLib в FlexMobile-Project - PullRequest
0 голосов
/ 07 февраля 2012

Я пытаюсь использовать FlexLib в проекте MobileFlex с Adobe Flash Builder 4.6. В целях обучения я пытаюсь создать iPad-версию ScheduleViewer1_Sample.mxml.

По какой-то таинственной причине - по крайней мере, по той причине, которую я не понимаю - она ​​не работает с последней версией flexlib (2.6-M2).

В предыдущей версии (2.5 - последняя на googlecode ) мне просто нужно было изменить используемые пространства имен, и это сработало как шарм.

Например, я изменил

<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns:flexlib="http://code.google.com/p/flexlib/" 
    creationComplete="onCreationComplete();">
<mx:Script>
  <![CDATA[
     //Stuff that just worked
  ]]>
 </mx:Script>  
 <flexlib:ScheduleViewer id="scheduleViewer" 
    width="600" height="400" 
    dataProvider="{ dataProvider }" 
    startDate="{ startDate }" endDate="{ endDate }" />         
</mx:Application>

до

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="MySchedule"
    xmlns:flexlib="http://code.google.com/p/flexlib/"
    creationComplete="onCreationComplete()">

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>

<fx:Script>
    <![CDATA[
        //I didn't change anything at the scripting part
    ]]>
</fx:Script>

      <flexlib:ScheduleViewer id="scheduleViewer"  
     width="600" height="400" 
     dataProvider="{ dataProvider }"       
     startDate="{ startDate }" endDate="{ endDate }" />
</s:View>

Это сработало. Я не знаю, было ли это правильно делать так, но это сработало. С последней версией GitHub она больше не работает. Я всегда получаю сообщение об ошибке

Объявление «ScheduleViewer» должно содержаться внутри тега, поскольку его нельзя назначить типу свойства по умолчанию «Array» или типу элемента «mx.core.IVisualElement».

Как заставить компоненты из FlexLib работать в iPad-проекте?

ОБНОВЛЕНИЕ: Скомпилированный FlexLib на моем компьютере, теперь ошибка изменилась на

Не удалось разрешить <flexlib:ScheduleViewer> для реализации компонента.

1 Ответ

2 голосов
/ 07 февраля 2012

Большинство компонентов FlexLib предшествуют искровой архитектуре, представленной во Flex 4. Я не ожидаю, что они будут оптимизированы для мобильного использования, поэтому у вас могут возникнуть проблемы.

Интерфейс IVisualElement также был представлен в Flex 4, и похоже, что компонент, который вы пытаетесь использовать, не реализует его.

Я предлагаю вам попытаться получить исходный код для компонента и перекомпилировать его в текущей версии Flex. Пока компонент расширяет UIComponent , все будет в порядке, поскольку UIComponent реализует IVisualElement. Если ваш компонент не расширяет UIComponent, вам придется реализовать IVisualElement, который может потребовать изменения компонента.

...