Как использовать C # с AIR? - PullRequest
5 голосов
/ 21 апреля 2009

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

Во всяком случае, мне было интересно, возможно ли хотя бы использовать C # вместе с Actionscript / AIR? Я не могу найти ни одного примера этого.

Кроме того, можно ли использовать собственные компоненты Flash в приложении Flex? Я знаю, что могу использовать компоненты Javascript.

Спасибо

Ответы [ 6 ]

8 голосов
/ 21 апреля 2009

Ваши параметры в AIR ограничены HTML / JS, Flash / ActionScript или Flex. Нет поддержки других языков и фреймворков.

3 голосов
/ 08 ноября 2011

Вы можете создать консольное приложение C # и вызвать его из AIR.

var file:File = File.applicationDirectory;
file = file.resolvePath("CSharpConsoleApplication.exe");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
nativeProcessStartupInfo.arguments.push("-arg");
var process:NativeProcess = new NativeProcess();
process.addEventListener(NativeProcessExitEvent.EXIT,onProcessDone);
process.start(nativeProcessStartupInfo);

Таким образом, у нас есть приложение C # с интерфейсом AIR.

2 голосов
/ 22 апреля 2009

Slukse правильно - это зависит от того, что вы подразумеваете под "рядом".

Очевидно, что вы не можете скомпилировать код C # в SWF - это то, что мы знаем. Но вы, безусловно, можете встраивать (как предполагает davr) элемент управления ActiveX в приложение .NET Forms, загружать SWF в этот элемент управления и использовать API ExternalInterface для соединения кода C #, выполняющегося в настольном приложении, и кода ActionScript, выполняемого в SWF. , Если вместе с тем вы имеете в виду написание серверного кода C # для визуализации данных, потребляемых приложением Flex, то, конечно, вы можете сделать это тоже - есть множество документов, описывающих, как подключить Flash или Flex (или AIR, по расширению) приложение к веб-службам различных разновидностей, в том числе относительно новый материал WCF.

Еще один способ - запустить отдельное настольное приложение на C # (например, службу, консольное приложение и т. П.) И прослушать это приложение через определенный локальный порт, а затем заставить SWF-файл общаться с этим приложением, используя Сокет классы. Сейчас я делаю что-то подобное (с Java, а не с C #, но идея та же) для личного проекта.

1 голос
/ 21 апреля 2009

Если под «рядом» вы подразумеваете использование c # в качестве промежуточного программного обеспечения для подключения к вашей базе данных (возможно, SQL Server) или для выполнения удаленных вычислений, тогда да, вы можете. Вы можете подключиться к сервису c #, используя удаленные объекты. Полуночные кодеры создают продукт под названием WebORB, который довольно прост в использовании. Версия 3.4 была полностью бесплатной версией, которой должно хватить, если вы создаете настольные приложения в Air. Следующие две версии не бесплатны, но, по сути, не дают вам никаких реальных преимуществ.

0 голосов
/ 22 апреля 2009

Единственный способ, которым я знаю об этом, - это программы веб-служб на C #, а приложения AIR / Flex взаимодействуют с веб-службами.

0 голосов
/ 21 апреля 2009

Смысл AIR заключается в том, чтобы позволить веб-разработчикам, знающим AS / JS, легко создавать настольные приложения, автоматически переносимые на win, linux и mac. Следовательно, почему нет способа соединить его с другими языками, такими как C #, C ++ и т. Д., Поскольку веб-разработчикам, как правило, нет дела до этих языков, и если они использовались, приложение больше не является переносимым (да, большинство языков может быть с некоторыми усилиями портирован на другие ОС, но смысл AIR в том, что вы пишете все, что хотите, и он работает везде без дополнительной работы).

Если вы хотите объединить C # и Flash, вместо того, чтобы пытаться поместить C # в AIR, вам следует поместить Flash в приложение C #. Для этого в Интернете есть различные ресурсы, вот один из них, который я нашел в быстром поиске: Пример: использование внешнего API с контейнером ActiveX . Когда вы ищете, убедитесь, что он говорит о более новом, более продвинутом методе ExternalInterface / External API, а не о методе oldschool SetVariable / CallFunction / watch. Более новый гораздо проще в использовании и имеет больше функций.

Кроме того, да, вы можете использовать собственные компоненты Flash внутри приложения Flex. Обычно вы просто создаете SWC во Flash CS3 (или CS4), а затем импортируете этот SWC во Flex Builder (или Flex SDK, или FlashDevelop, или ...)

Если вы сами делаете компоненты внутри Flash CS3, вам следует использовать Flex Component Kit. Он предоставляет некоторые функции для вас и вставляет шаблонный код, чтобы ваш Flash-компонент хорошо работал во Flex. Он входит в состав Flex Builder / Flex SDK.

...