14

我必须为我们的产品选择一个平台。我必须在 Qt 框架和 Adob​​e 的 AIR 之间做出决定。由于过去两年的工作,我精通 Qt。我查看了 Adob​​e 的网站,但所有关于 flex、flash、HTML/ActionScript 编码能力的信息都令人难以理解。我无法理解有关 Adob​​e 生态系统的以下内容。

我对 Adob​​e AIR 有以下问题:

  1. 我使用什么语言来编码我的应用程序?(不仅仅是定义 UI 的外观)
    就像在 Qt 中一样,我使用 C++。是动作脚本吗?

  2. 我们可以说 AIR 仅用于为应用程序制作 UI。

  3. 实用程序类和 AIR 的文档在哪里?
    例如http://qt-project.org/doc/对于 Qt

  4. Qt 附带了大量可以使用的预制小部件。Adobe 是否附带任何此类小部件集,如果有,我可以在哪里看到它,如 url?

  5. 我了解 flex SDK 是开源的。我可以制作商业应用程序并发布它们吗?flex SDK 是否提供所有内容(编译器、实用程序类/小部件)

  6. AIR 在许可方面的成本是多少?

  7. AIR中是否有相当于QT的QGraphicsView的东西?

4

7 回答 7

11

如果您需要访问很多本机库,则需要留在您的 QT 环境中。请记住,AIR 是单线程的,并且在 Flash Player 上运行(最初是为基于帧的动画设计的)。但是,根据您正在构建的应用程序的风格,AIR 可能非常适合您。

请注意,AIR 可能会让人感到困惑,因为创建 AIR 应用程序有几种不同的开发人员路径:1) 使用 html/javascript 和 AIR SDK,2) 使用 Flash/Actionscript 和 3) 使用 Flex SDK 和/或 Flex builder。就传统桌面开发背景而言,最后一个是最有能力的。

用于连接到 Web 服务的 Web 2.0 小型应用程序非常适合 AIR 应用程序。像 IM 客户端 Digsby 这样的东西会很棒。到目前为止,我最喜欢的 AIR 应用程序是 Basamiq Mockups。其他有用的应用程序是 TweetDeck。这些是非常适合使用 AIR 解决的问题类型的很好示例。

您应该访问 Adob​​e Showcase 并查看一些应用程序:http: //www.adobe.com/products/air/showcase/

另外,如果你想退出 C++ 游戏,我相信 QT 现在有一些 java 绑定......我还记得一些 python 绑定,但我自己从来没有看过那些。

就 QGraphicsView 而言,人们在 Flex 中也做过类似的事情。我现在尝试谷歌搜索,但最初找不到它们,但人们已经拍摄了一张大图像,然后只在窗口中显示了当前区域。此外,在 Flex 的下一个版本中,他们正在构建一个官方的 ViewPort 组件:
http ://opensource.adobe.com/wiki/display/flexsdk/Gumbo+Viewport

于 2008-11-25T19:34:37.810 回答
5

花一些时间在这个 AIR 应用程序上,然后问自己是否值得花时间来掌握 Adob​​e Flex 和 AIR(准备问自己为什么不存在类似 C++/QT 之类的东西):

环法自行车赛

Tour de Flex 是一款用于探索 Flex 功能和资源的桌面应用程序,包括核心 Flex 组件、Adobe AIR 和数据集成,以及各种第三方组件、效果、皮肤等。

你的一些问题:

  • Flex 可以用 MXML 和 ActionScript3 编码。AIR 还支持 HTML/DOM/JavaScript 编程,因为 webkit HTML 渲染引擎内置在 AIR 运行时中。
  • MXML 是一种 XML 声明性 DSL,可编译为 ActionScript3 命令式代码。不过,它非常适合以声明方式对 UI 的图形形式(即 MVC 模式的视图)进行编码。
  • ActionScript3 有一个建立在 JavaScript 之上的传统,但它已经被修饰到更类似于 Java 或 C# 的程度。它有包命名空间、类和继承接口、类成员访问保护关键字、构造函数、静态成员,以及一些非常好的 Java 附加功能:属性、事件、数据绑定和闭包。

Flex 风格的编程也是一个依赖异步 I/O 交互的单线程模型。这是一个比多线程 Java Swing 或 C# .NET Winform 应用程序更简单的编程模型,但允许实现相同的程序行为最终结果。我在这里详细说明:

Flex 异步 I/O 与 Java 和 C# 显式线程

于 2008-12-25T02:30:25.320 回答
4

Flex 是开源的,您可以免费下载 SDK,没有与之相关的许可费用。(见他们的常见问题解答

他们确实提供了一个“flex builder”,我认为这是一些自定义的 Eclipse,而且需要花钱,但是没有它你也可以完美地工作。

可以在adobe 的 livedoc页面上找到这些文档。(对某些人来说,这本身就是不喜欢 Adob​​e 的充分理由;))

我确实想知道,如果您精通 QT,为什么还要考虑其他事情?与 QT 相比,您希望 AIR 给您带来哪些优势?

我对 QT 和 Flex 都有一些经验,但还不足以衡量两者之间的关系。我确实知道 QT/C++ 比 Flex/ActionScript 成熟得多。

如果您已经了解 QT,我认为花时间学习新框架(和编程语言)不会让您获得足够的诚实...

于 2008-11-25T10:05:36.163 回答
3

我使用过 QT 和 Flex(虽然不是 Air 本身),并且发现 Flex 可以更快地启动和运行应用程序以及进行修改,而 QT 为您提供了更多控制权——尤其是在安装程序中。Air 应用程序安装程序相当笨拙,或者至少在我尝试它时是这样,尽管从那时起它可能已经得到了改进。

Air 的一大优势在于它的大部分代码可以在网页内的 Flash 中运行。出于安全原因,您无法从 Web 访问本地文件系统等,但几乎所有其他内容都是可移植的。

于 2008-11-25T14:06:51.233 回答
2

我做了相反的动作。我开始研究 Adob​​e 的东西,然后转到 QT。这样做的主要原因是关于 Adob​​e 框架的限制。当你使用 Adob​​e 的东西时,你受限于他们生产的工具,如果不能用 Adob​​e 的东西做你想做的事情,就很难引入外部框架或库。通常,解决方案是使用套接字,它在客户端-服务器架构上转换假定的“独立”应用程序。此外,如果您使用许多外部的东西,可能很难管理这么多不同的客户端。使用 QT,您可以使用 C++ 编写代码并添加您想要的任何外部框架或库。尽管如此,有时编码它并不容易,它是可行的并且没有“奇怪”的系统架构。

于 2010-10-22T17:36:57.130 回答
1

如果您正在寻找一些使用 Qt 和 SVG 的“有趣”用户界面示例,请查看 KDEGames [1][2] 和 KDEEdu [3][4] 项目。那里有很多很好的代码,它们使用 QGraphicsView 和 SVG 来创建可扩展的界面。当然请注意,这是 GPL,所以如果您的应用程序不是,请小心您“借用”的内容。

[1] http://games.kde.org/

[2] http://websvn.kde.org/trunk/KDE/kdegames/

[3] http://edu.kde.org/

[4] http://websvn.kde.org/trunk/KDE/kdeedu/

于 2008-11-28T15:30:43.250 回答
0

我将支持 @ Pieter的评论 - 如果您已经了解 QT,那么迁移到一个全新的环境将需要更长的时间。

QT 具有跨平台的优势,并且非常成熟:有适用于 Windows、Linux 和 Mac OS X 的库。我对 AIR 不是很熟悉,只知道它来自 Adob​​e,但产品网站似乎表明它是对于富互联网应用程序 ( http://www.adobe.com/products/air/ )。如果这是真的,那么如果您正在开发桌面应用程序,QT 将是更好的选择。

于 2008-11-25T10:28:01.360 回答