Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flash versus Flex

Flash and Flex both use the same underlying rendering engine, just with different front-ends. Flash is better suited for making movies and animations. Flex is better for application development.


From a programmer's viewpoint, the big difference between Flash and Flex is not so much which IDE/application you use for programming, but whether you program in ActionScript (AS) only, or use the Flex framework and MXML to program your applications.

I would say pure ActionScript is better for programming (whether you use Flash IDE or Flex IDE is not that relevant), and MXML is better for non-programmers to combine the components programmed in AS.

I would add to your list these pros/cons:

Flex:

Pros:

  • Easier for non-programmers to get into application development
  • You can quickly combine components to create small applications
  • Components can provide an advantage in large-scale projects

Cons:

  • Customizing the look of components can take a lot longer than anticipated, depending on the visual style you're looking for
  • When you find out you need a custom component that doesn't exist, you might need to go back to Flash to do the real programming work and packaging of the component
  • The "flexibility" of Flex means you will be reading a lot of documentation
  • Bugs in the Flex framework
  • You eventually will need to compromise with the architecture of the Flex framework

Flash (or Flex IDE in ActionScript project mode):

Pros:

  • Easier for someone with a programming background ;)
  • You can program whatever you like; no compromises with existing frameworks

Cons:

  • Timeline can be daunting for programmers (although you can quite safely ignore it)
  • Development of certain types of applications will be slower than with Flex

In short: pick the right tool for the right task.


Flex is a library of code written in ActionScript3, so it adds lots of capabilities and standard-library-like stuff to Flash. The downside is that it a is a huges amount code that gets included into your application. If you use any Flex at all in your app, the download size of the SWF goes up by 100's of K.

If your application has any kind of user interface widgets, then you almost have to use Flex as Flash itself only has the most basic things like text boxes. Flex has a whole XML GUI with layouts, data binding and XML setup etc.

Doing that in flash, you end up having to write from scratch things like list boxes...


In my opinion, the most important feature of the Flex framework is the component lifecycle, which provides a really elegant model for validation/invalidation of properties, component size, and hierarchical rendering.

The benefit to developers is that it creates discrete application phases for business logic and rendering, avoiding expensive geometry & rendering code until the last possible moment before drawing a frame.

Here's a really good presentation, explaining how it works:

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

The model is so well-designed that the component lifecycle remains almost entirely invisible during the majority of Flex development, when you're using the framework default components and containers. You only need to learn the inner-workings when you start developing your own components.

Developing in the Flash environment, or in pure Actionscript, you don't get any of that. Anyone developing pure AS3 applications either needs to code very carefully to separate business logic from rendering, or will suffer severely decreased performance.


[...] why would I want to use Flash without flex?

Flex is a new product, whereas Flash existed from the Macromedia days. Designer, animators and most anybody who is not brought up on a staple diet of programming education will probably find Flash easier to master than most other such solutions.


Target is different. Flex is more dedicated for programmer while Flash is more friendly to Artist / web designer.


Flash is the IDE used (generally) to create animations and things that work well on a timeline.

Flex works better for creating internet applications which have interactions more akin to a desktop.

Why use Flash? Well, if you need to do something more specifically attached to a timeline, of course!