我在制作Flex网站方面有一些基本经验,但我认为我在制作桌面AIR应用程序时更多地使用Flex。
无论如何,我想知道是否至少可以在ActionScript / AIR旁边使用C#?我找不到任何这方面的例子。
另外,我可以在Flex应用中使用自定义Flash组件吗?我知道我可以使用Javascript组件。
由于
答案 0 :(得分:8)
AIR的选项仅限于HTML / JS,Flash / ActionScript或Flex。没有其他语言和框架的支持。
答案 1 :(得分:3)
您可以创建一个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);
通过这种方式,我们有一个带有AIR接口的C#应用程序。
答案 2 :(得分:2)
Slukse是正确的 - 这取决于你在“旁边”的意思。
显然你无法将C#代码编译成SWF - 我们知道的很多。但是您可以将(通过davr建议)ActiveX控件嵌入到.NET Forms应用程序中,将SWF加载到该控件中,并使用ExternalInterface API桥接桌面应用程序中运行的C#代码和SWF中运行的ActionScript代码。如果与你同时意味着编写服务器端C#代码以呈现Flex应用程序可以使用的数据,那么当然,你也可以这样做 - 有很多文档涉及如何连接Flash或Flex(或AIR,通过扩展)应用程序到各种风格的Web服务,包括相对较新的WCF的东西。
另一种方法是运行一个独立的C#桌面应用程序(例如,服务,控制台应用程序等)并让该应用程序通过某个本地端口进行监听 - 然后让您的SWF与该应用程序通话套接字类。对于个人项目,我现在正在做这样的事情(使用Java,而不是C#,但想法是一样的)。
答案 3 :(得分:1)
如果“旁边”是指使用c#作为中间件连接到您的数据库(可能是SQL Server),或者执行远程计算,那么您可以。您可以使用远程对象连接到c#服务。午夜编码器生产一种名为WebORB的产品,使用起来相当简单。版本3.4是一个完全免费的版本,如果你在Air中构建桌面应用程序就足够了。接下来的两个版本不是免费的,但基本上没有为您提供真正的优势。
答案 4 :(得分:0)
AIR的重点是让知道AS / JS的Web开发人员能够轻松制作可自动移植到win,linux和mac的桌面应用程序。因此,为什么没有办法将它连接到其他语言,如C#,C ++等,因为Web开发人员通常不关心这些语言,如果使用它们,应用程序不再可移植(是的,大多数语言都可以通过一些努力移植到其他操作系统,但AIR的重点是你可以编写任何你想要的东西,它可以在任何地方运行而无需额外的工作。)
如果你想结合使用C#和Flash,而不是试图将C#放在AIR中,你应该做的就是将Flash放在C#应用程序中。互联网上有各种各样的资源,这是我在快速搜索中找到的资源:Example: Using the External API with an ActiveX container。在搜索时,请确保它讨论更新,更高级的ExternalInterface / External API方法,而不是oldschool的SetVariable / CallFunction / watch方法。较新的一个更容易使用&有更多的功能。
此外,是的,您可以在Flex应用程序中使用自定义Flash组件。通常,您只需在Flash CS3(或CS4)中创建一个SWC,然后在Flex Builder(或Flex SDK,或FlashDevelop,或......)中导入该SWC
如果您自己在Flash CS3中制作组件,则应使用Flex Component Kit。它为您提供了一些功能,并提供了样板代码,以使您的Flash组件在Flex内部发挥出色。它包含在Flex Builder / Flex SDK中。
答案 5 :(得分:0)
我知道这样做的唯一方法是使用C#Web服务程序,AIR / Flex应用程序与Web服务进行通信。