Flash与Flex的区别

40

我已经尝试过在各处寻找使用Flex与Flash的优缺点的简明列表。

作为一个编程背景的人,我非常喜欢Flex。它易于上手,并且由于它可以使用flash类,那么为什么要使用没有flex的Flash呢?

Flex:

优点:

  • 适用于RIA开发
  • 提供了许多用户输入选项
  • 内置布局系统
  • MXML对于非程序员来说更容易理解
  • 可以快速组合组件创建小型应用程序
  • 组件的模块化特性使其在大型项目中具有优势
  • 可在linux下开发
  • 具有良好的组件生命周期保证验证等功能实现

缺点:

  • 增加了.swf文件的大小
  • 自定义组件的外观可能比预期花费更长时间,这取决于您要寻求的视觉风格
  • 当您发现需要一个不存在的自定义组件时,您可能需要返回Flash以完成实际的编程工作和组件打包
  • “灵活性”意味着您将阅读大量文档
  • Flex框架中的错误
  • 您最终需要与Flex框架的架构达成妥协

Flash

优点:

  • 适用于制作电影/动画
  • 时间轴可以更容易地被设计师/动画师所理解
  • 从头开始工作时,可以提供更多的控制。
  • 对于具有编程背景的人来说更容易上手
  • 您可以编写任何自己想要的东西;没有现有框架的妥协

缺点:

  • 只提供基本用户输入(文本框)
  • 时间轴对程序员来说可能是令人生畏的(尽管可以安全地忽略它)
  • 某些类型应用程序的开发速度将比使用Flex慢
  • 无法在linux下开发
  • 所有用户输入验证必须在代码中处理。没有内置验证。
  • 需要实现自己的布局系统
  • 如果我漏掉了什么,请纠正我。

    12个回答

    17

    Flash和Flex都使用相同的底层渲染引擎,只是具有不同的前端。 Flash更适合制作电影和动画,而Flex更适合应用程序开发。


    7
    在我看来,这有点不可比较。在Flex中,你根本无法制作时间轴电影和动画。但是Flex和Flash都允许你开发应用程序。 - Niko Nyman
    那么两个版本都将在2020年被淘汰? - Splash

    9
    从程序员的角度来看,Flash和Flex之间的最大区别不是你用哪个IDE/应用程序进行编程,而是你是仅使用ActionScript(AS)编程,还是使用Flex框架和MXML编写应用程序。
    我认为纯ActionScript更适合编程(无论您使用Flash IDE还是Flex IDE都不那么相关),而MXML更适合非程序员组合使用AS编写的组件。
    我会在您的列表中添加以下优缺点:
    Flex:
    优点: - 更容易让非程序员进入应用程序开发 - 您可以快速组合组件以创建小型应用程序 - 组件可以在大型项目中提供优势
    缺点: - 自定义组件外观可能需要比预期的时间更长,具体取决于您要寻找的视觉样式 - 当您发现需要一个不存在的自定义组件时,您可能需要回到Flash进行真正的编程工作和打包组件 - Flex的“灵活性”意味着您将阅读大量文档 - Flex框架中的错误 - 您最终将需要与Flex框架的架构妥协
    Flash(或ActionScript项目模式下的Flex IDE):
    优点: - 对于有编程背景的人更容易 - 您可以编写任何您喜欢的东西;不需要与现有框架妥协
    缺点: - 时间轴可能令程序员望而却步(尽管您可以安全地忽略它) - 某些类型的应用程序的开发速度将比Flex慢
    简而言之:选择正确的工具来完成正确的任务。

    关于:“回到Flash进行真正的编程”,如果你这样做,我不确定它是否能在Flex框架中工作? - JD Isaacks
    1
    有点含糊,是我的错误。重点是对于高度定制的组件,最方便的方法是在Flash中制作和打包组件,然后在Flex应用程序中使用它。 - Niko Nyman

    8

    Flex是用ActionScript3编写的代码库,因此它为Flash添加了许多功能和类似标准库的东西。缺点是它包含了大量的代码,这会使您的应用程序下载大小增加数百K。如果您在应用程序中使用任何Flex,则SWF的下载大小都会增加。

    如果您的应用程序具有任何类型的用户界面小部件,则几乎必须使用Flex,因为Flash本身只有最基本的东西,如文本框。Flex具有整个XML GUI,包括布局、数据绑定和XML设置等。

    如果在Flash中实现这一点,您最终将不得不从头开始编写像列表框之类的东西...


    1
    实际上,Flash 中也有几乎相同的组件可用。但是你必须使用 ActionScript 代码进行编程,而不是在 XML 中编写脚本。 - Niko Nyman
    @Niko,Flex中有几个组件在Flash中没有(至少我没有用过CS4之前的CS3)。例如:Canvas、HBox、ApplicatoinControlBar、Alert、RichTextEditor、Panel、Form等等。 - JD Isaacks

    6
    在我看来,Flex框架最重要的特点是组件生命周期,它为属性的验证/无效、组件大小和分层渲染提供了非常优雅的模型。
    开发人员受益于此,因为它为业务逻辑和渲染创建了离散的应用程序阶段,在绘制帧之前尽可能晚地避免昂贵的几何和渲染代码。
    这里有一个非常好的演示,解释了它是如何工作的:

    http://tv.adobe.com/#vi+f15384v1002

    这个模型设计得非常好,以至于在使用框架默认组件和容器进行大多数Flex开发时,组件生命周期几乎完全不可见。只有当您开始开发自己的组件时,才需要学习内部工作原理。
    在Flash环境或纯Actionscript中进行开发,您将无法获得任何帮助。任何开发纯AS3应用程序的人都需要非常小心地编写业务逻辑与渲染分离的代码,否则将严重降低性能。

    4

    [...] 为什么我要在没有Flex的情况下使用Flash?

    Flex是一个新产品,而Flash从Macromedia时代就已存在。设计师、动画师以及大多数非计算机专业出身的人可能会觉得Flash比其他类似解决方案更容易掌握。


    2
    Flex是Macromedia的产品,已经存在很长时间了。他们只是以荒谬的“企业”价格销售,这使得它对真正的人来说是不可见的。在Flash中尝试在时间轴上进行交互无论是设计师还是其他人都会感到痛苦。 - Joel Hooks

    3

    目标不同。 Flex更适合程序员,而Flash更友好于艺术家/网页设计师。


    这句话表面上看起来是正确的,但好的Flex应用程序需要具备强大的设计和开发能力 - 就像Flash IDE应用程序一样。 - Joel Hooks

    3

    Flash是一种用于创建动画和时间轴上运作良好的其他东西的IDE。

    Flex更适用于创建具有类似桌面的交互的互联网应用程序。

    为什么使用Flash?当然,如果您需要执行与时间轴特别相关的操作!


    2
    我认为Flex更适合开发基于应用程序解决方案的RIA应用。使用Flex可以获得许多开箱即用的功能,但这也会带来文件大小和粒度等方面的代价。
    如果您正在开发完全定制的解决方案(例如游戏),那么也许Flash才是更好的选择,因为您可以从空白画布开始。许多人仍然使用Flash,因为他们不需要Flex平台的所有应用程序铃声和哨子。

    RIA应用程序,ATM机,年利率。 - Anthony

    2

    我喜欢Flash的自由度,它非常容易嵌入资源,但在Flex中有点复杂。

    我喜欢Flex的一件事是能够轻松制作流体应用程序。而在Flash中需要花费很长时间。

    在Flex中你可以做任何在Flash中能做到的事情,只不过可能需要更长的时间。但是并不是所有在Flash中能做到的事情都可以在Flex中实现。

    Flex为您处理所有UI编程,让您专注于业务逻辑。而在Flash中,您将花费大部分时间编写UI。


    2

    在Linux下开发Flex应用程序很容易,但使用Flash就不行了。


    没有必要在Linux上使用Flex框架。它可以直接编译Flash,而不需要框架链接。 - Joel Hooks

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接