views:

72

answers:

2

I'm trying to learn how to build interactive data visualizations, and I think I want to go the Flash/Flex/ActionScript route instead of using Processing.

The problem is, I've never understood what the difference between all three is, so I don't know which one I should be learning.

It sounds like Flash is more for designers/non-programmers, Flex is more for programmers, and ActionScript is just the programming language used in Flash and Flex (i.e., Flash and Flex are to Actionscript as the iPhone SDK is to Objective C...?). Is this correct?

If so, I'm a programmer, so it sounds like I'd want to go either the Flex or ActionScript route. What's the difference between picking up an ActionScript book vs. picking up a Flex book?

+3  A: 

Edits: Replace "Flex" with "Flash Builder", replace "Flash" with "Flash CS", and add the following comment: This post is really about Flash CS5 and Flash Builder (formerly Flex Builder). See the other answer to this question for a good discussion of the Flex framework itself.

You might think of Flash CS and Flash Builder as two IDE's for working with ActionScript (AS). If you want to make drawings and animations, Flash CS gives you much better GUI tools for that. If you want to make applications that are more data-oriented, with things like forms, datagrids (like tables), and the like, Flash Builder has better tools for that. Ultimately, each is providing a set of UI tools which result in a (more or less hidden) set of AS classes that are then compiled into a SWF (movie playable by the flash player). And once you get down to the level of directly writing AS classes, I'm pretty sure you can do anything in either that you can do in the other. So it's kind of a question of which gui is better suited to your needs. Also, last I looked anyway, Flash Builder is built on top of Eclipse whereas Flash CS is its own standalone application. If you like Eclipse, Flash Builder has an edge; obviously, if you hate eclipse, the opposite is likely true. One nice thing is that Eclipse is still eclipse so you can treat AS as just one of the languages it supports: i.e. you could also use it for Java, ColdFusion, PHP, etc.

Unless this changed in the latest version, I'm pretty sure that the one thing Flash Builder can do that Flash CS can't is build an AIR app.

Books. A good AS book should teach you about the extensive class library that's built into AS, and how to extend it with your own packages and classes. It could vary from pretty much a printed version of the language reference that Adobe has online, to a book about programming in AS, to a book about design patterns in AS. It might teach you anything from just about nothing to a fair amount about how to use the Flash CS or Flash Builder IDE. On the other hand, a good Flash CS or Flash Builder book should teach you a lot about how to use the IDE, including its various user interfaces, and may cover anything from a little to a great deal of AS.

Finally, unless you're committed to a book, you might just start with a free 30 day demo, and the extensive built in help. Beyond that, there's lots of stuff available on Adobe's website. And then there's all those websites about coding and flash, etc.

Sid_M
"You might think of Flash and Flex as two IDE's for working with ActionScript (AS)." and "Flex is built on top of Eclipse whereas Flash is its own standalone application" indicate to me that you are confusing Flex Builder (which is now Flash Builder) with the actual Flex framework. See PatrickS's answer for a more correct definition.
Allan
@Allan thanks for the correction. I've tried to take it into account in my edit (without rewriting the entire answer).
Sid_M
+4  A: 

I think the confusion comes from the word Flash , which could refer to the general use of the Flash Player plugin, the actual software or just generally anything programmed with Actionscript. Also, there's clearly a lack of distinction between the languages ( MXML , Actionscript ) and the tools ( Flash IDE , FlashBuilder ) a problem that Adobe should clearly address ( In that respect the name FlashBuilder is a better choice than Flex)

Another way to look at it is to think of the end product, namely a compiled swf. At the beginning, the only way to produce a flash movie , or a swf , was to work with the Flash IDE. It was fine for designers but very frustrating for developers. Things have changed!

Instead of thinking Flash vs Flex, think Flex projects vs pure Actionscript projects.

Flex is first and foremost a framework built on top of Actionscript, which targets web applications and comes with a set of UI components to that effect. Also, Flex comes with its own language, MXML.

more info here:
http://ted.onflash.org/2008/01/what-is-flex.php

For pure Actionscript projects, as a developer, you may want to discard the Flash IDE and use alternatives such as FlashDevelop( Windows ) , FlashBuilder and FDT, there are other options , but let's just say these are the major ones.

Whatever you can do with Flex, you can do with Actionscript 3 , don't forget Flex is built on top of AS3.

So the difference with picking up an AS3 book or a Flex book, is basically the difference between reading about a programming language and reading about a framework.

Finally , Haxe is another approach which is gaining more and more support.
http://haxe.org/doc/intro

PatrickS