Совместное использование кода между Flex и AIR - PullRequest
3 голосов
/ 17 ноября 2010

Как вы знаете, мы могли бы создать приложение RIA на основе flex. Также мы могли бы создать настольное приложение на основе AIR. У меня есть вопрос, если мы хотим создать веб-приложение и приложение для настольного компьютера одновременно. Можем ли мы использовать одни и те же коды для доставки нашей продукции в Интернет и на ПК?

Ответы [ 3 ]

5 голосов
/ 17 ноября 2010

Если вы разрабатываете свое приложение для него, у вас не должно возникнуть проблем с совместным использованием 99% базы кода между сборками Flex и AIR.

  • Вам потребуется отдельное приложение MXML дляверсии Flex / AIR, так как AIR использует WindowedApplication, а Flex использует Application

  • Вам необходимо будет абстрагироваться от использования любых API-интерфейсов AIR.Это означает, что любой класс, свойство или метод помечены значком AIR-only (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/images/AirIcon12x12.gif) в онлайн-документации . Этот процесс может оказаться проще, если вы используете контейнер внедрения зависимости, такой как Swift Suspenders .

  • В качестве альтернативы, вы можете разделить ваш сервис определений на два разных дерева исходников. Это приведет к вашему проекту AIR и проекту Flexсовместно использовать один исходный путь, но также иметь свой собственный исходный путь. Таким образом, код, который обращается к com.application.MyService, будет совместно использоваться в AIR и Flex, но реализация из com.application.MyService будет отличаться в зависимости от того, какой 'источник службыпуть ».

  • Может оказаться полезным настроить каждую сборку с флагом компилятора, например -define+=CONFIG::AIR. Это позволяет вам использовать условную компиляцию, чтобы вы могли скомпилировать еефайл для обеих сборок, но содержит специальный код для сборки AIR.

Вот пример условной компиляции:

public function getMyService() : IMyService
{
    CONIFG::AIR
    {
        return new MyServiceThatUsesAnAIROnlyAPI();
    }

    return new FallbackServiceForFlex();
}

К сожалению, нет способа «отрицать» условный флаг (т.е.!CONFIG::AIR), поэтому вы должны быть осторожны с его использованием или включить два флага (CONFIG::AIR и CONFIG::FLEX)

1 голос
/ 17 ноября 2010

Я удивлен, что никто еще не сказал это, но вот как бы я это сделал:

  1. Создать проект библиотеки. этот проект будет включать все ваши общий код
  2. Создание проекта Flex для веб-развертывания
  3. Создание проекта AIR для развертывания AIR

И проекты Flex, и проекты AIR могут ссылаться и использовать код в проекте библиотеки. Проект AIR может использовать специальные функции AIR, не влияя на веб-проект.

Если вам нужно выполнять различные действия по-разному в зависимости от того, используете ли вы веб-проект или проект AIR, вы можете создать интерфейсы в проекте библиотеки и внедрить их в основном проекте для использования соответствующих API-интерфейсов.

0 голосов
/ 17 ноября 2010

да, вы можете сделать это.есть некоторые условия, которые вы должны контролировать в коде.

Имейте в виду, что если приложение также является гибким приложением, то оно будет приложением с одним окном.для каждого проекта, который мне нужен, я создаю 3 проекта

  1. кодовая база (основной элемент управления - группа или холст)

  2. flex exporter=> когда вы создадите это, у вас будет гибкое приложение, которое будет иметь элемент управления # 1 внутри основного приложения

  3. air exporter => когда вы создадите это, вы получитеПриложение Air имеет управление с # 1 в главном окне.

...