условная компиляция во Flex (Actionscript) и операторы импорта - PullRequest
3 голосов
/ 10 июня 2011

У меня есть веб-приложение, написанное на Flex, и я пытаюсь создать приложение AIR из той же кодовой базы, используя условную компиляцию.

В приложении AIR мне нужны операторы импорта, такие как: импортировать flash.data.SQLConnection; импортировать flash.filesystem.File; но я не могу иметь эти операторы импорта в веб-приложении, потому что они являются классами только для AIR.

Я думал, что смогу использовать условную компиляцию для преодоления этой проблемы, но затем я прочитал следующее на странице http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7abd.html: «Нельзя использовать постоянные логические значения для условной метаданных или операторов импорта.»

Если это так, как я могу иметь общую кодовую базу для веб-приложений на основе Flex, а также для настольных приложений? Кто-нибудь решил эту головоломку?

Спасибо

Дилип

Подробнее об этом вопросе после некоторых проб и ошибок ... У меня есть 3 проекта в Eclipse для этого проекта ... один для веб-приложения, один для приложения AIR и один для общего исходного кода. В веб-проекте и проекте AIR я указываю на общий исходный код. В общем коде я использовал условную компиляцию, и похоже, что вы можете сделать что-то вроде следующего: CONFIG :: desktopMode { импортировать flash.data.SQLConnection; импорт flash.events.SQLEvent; import flash.events.SQLErrorEvent; импортировать flash.filesystem.File; }

и аналогичный подход для включения определенных функций для Интернета или AIR во время компиляции. Подход, кажется, сработал до сих пор!

Единственное место, где я сталкивался с проблемами, это локатор модели моего Cairngorm. Если я поместил CONFIG :: desktopMode вокруг операторов import в локаторе модели Cairngorm, он начнет выдавать ошибку «Uncaught исключения в компиляторе» или «1131 классы не должны быть вложенными». Я не уверен, как исправить эту ошибку!

Дилип

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

Вы можете избежать импорта, ссылаясь на полные имена классов в коде.Таким образом, вы можете использовать условную компиляцию.

1 голос
/ 10 июня 2011

Обычная «кодовая база» на самом деле не такова.Ваша общая кодовая база - это представления и тому подобное, но от вашего Flex до вашего приложения Air ваш бизнес-уровень меняется.Для этого я бы порекомендовал вам создать 2 разных проекта (один для веба, другой для эфира) и иметь проект библиотеки для всех общих компонентов, классов, чего угодно, что можно разделить между ними.

Этоневозможно иметь такой класс, как вы говорите: «если гибкий, используйте только этот код;если air использует это, поскольку air SDK добавляет дополнительные функциональные возможности, и просто сказать «импортировать это» не получится, потому что вам также необходимо удалить все ссылки на этот импорт, что делает его нечитаемым.

Вам необходимо правильно спроектировать свой проект, чтобы можно было разделять и абстрагировать большинство классов, чтобы их можно было использовать для обоих проектов, а затем в каждом проекте есть своя конкретная реализация.Использование инфраструктуры приложений, такой как Parsley, может помочь вам в этом;Я знаю, это помогло мне.

0 голосов
/ 02 марта 2013

Вы всегда можете переключиться на какой-нибудь полный препроцессор, такой как M4, и собрать свою программу, используя обычные инструменты сборки, а не IDE.

...