Macromedia Flash 7.0: RAD or BAD?

After hearing a lot of noise from the Macromedia community about the latest release of Flash and reading a lot of the hype, I was actually pretty excited to see what it could do. Yes, my intuition told me, "Macromedia can't possibly have gotten it right this time." But, there were these thoughts creeping around in some dark corner of my mind that kept whispering, "Maybe they did..." So, after much deliberation, I downloaded the Macromedia Flash 7.0 (2004) Professional Edition trial, so that I could put the debate raging in my mind to rest.

Launching the program, I quickly discovered that the UI looks pretty slick. I guess it is pretty similar to the MX UI, but the proper application of gradients here and there add quite a bit. What was even cooler was all the options I have when I selected "File | New...", the two that really caught my eye were "Flash Form Application" and "Flash Project." So, I began to think, maybe the hype was true, Flash now includes project support and support for form based applications, which both sound like a huge jump in the right direction.

Flash Form Application... Click.

One quick look at the screen told me something wasn't right... where was the new UI? Yah, I saw an additional panel added to my screen, but I still had all my drawing tools and an animation timeline cluttering up the screen. "Oh well," I thought, "one strike isn't too bad, I could just hide that stuff if I really didn't want to use it.... now where are these flashy components I've been hearing about?" Examining the panels on the right side of the screen, I found the "Components" panel. I guess you could say that it is pretty similar to the VS.NET toolbar, a list of available components is displayed, along with an icon and a text description. Like VS.NET, you can also double click to add the item to the form, or drag it directly to where you want it to appear. Unlike VS.NET, however, there is no "Add Tab.." or "Customize Toolbox..." options to easily snap in some third party component (I assume a simple installer will do the trick, but when doing internal dev in VS.NET, I am constantly adding tabs ad-hoc for individual projects that have their own custom UI components).

DataGrid... Drag... Drop...

My form now contained a box with some gradients on the top and left side... it didn't look like a grid, but there wasn't any data bound to it, so no biggy. However, the grid was definately too small. The grid was selected, but where were those cool resize blocks on the corners? Not there...

Right Click... Free Transform

Now, I found the resize tool... and, to my suprise, resizing the datagrid actually worked. It didn't scale like a movie clip, the header and scrollbar repositioned correctly without enlarging themselves. Neato. It was a little painful to do that extra click, but nothing I couldn't handle. Glancing through the list of available components, I noticed a window control. "Sweet," I thought, "now I can make a slick little dialog box with a form in it".

Window... Drag... Drop...

Now that I had my window on the screen, I had to add some controls.

TextArea... Drag... Drop...
Button... Drag... Drop...

"Wait," I began to think to myself, "How do I make these controls stay on top of this window when I drag it around?" In VS.NET, this wouldn't be a concern. Dragging items onto panels associates those items with that panel and you are good to go. However, the lack of UI feedback when I tried to do this told me that I wasn't going to be so lucky with Flash. I compiled the swf, just to make sure, and sure enough, the window dragged, but the controls were left behind. After searching through the UI, I couldn't find any options to attach controls to other controls, but I did find a "Insert Nested Screen" option. From the looks of things, this was going to work. When I dragged around my window in the UI, the controls moved with it. However, compiling exhibited the same behavior as before. After 10-15 minutes of looking around, I just gave up and decided to create a plain vanilla form.

It didn't take too long to drag my form items into place. The auto-snapping features in the UI where really slick. As you begin to drag an item on your form, guides appear when you position your control next to another, enabling you to quickly snap UI components into place. As a simple test, I wanted to create a standard mailto form. Unfortunately, you can't just double click a button and have an event handler pop up. Common actions are accessable through the "behaviors" panel, which contains all sorts of useful little dealies, but not a mailto command, so I needed to resort to hand coding (again, not a big deal, I would have done the same in VS.NET...). Unforunately, the behaviors panel (which is equivalent to the events panel in VS.NET) doesn't let you add a custom action, you only get to choose from Macromedia's preset list. It took me a few seconds to remember how and where to insert a custom action (you can't just say, "button.Click+=myHandler"), but I've used Flash enough times in the past to locate what I needed and add the event. ActionScript is fairly limited because it is a client-side, player only, scripting language (hey, the entire runtime fits in a 400k download). You can't send any mail, so that mailto form just isn't going to fly. I suppose you could create an ASP.NET webservice on the background and send your message via a SOAP call, but I'm not sure if the average flash dev. can do that (plus, you have to fire up a second IDE to do all your work, as well as work with two seperate sets of projects, which is a pain).

Oh well... I decided to play around with the components. Supposedly, there is a new component architecture in Flash 7.0 that completely changes the way components work. Components are now derived from a base class, which provides them with a bunch of misc. events (such as draw) and methods (such as invalidate and redraw). Still, the base class doesn't even contain properties as rudimentary as "visible," so the end result is that you can't even set the visibility of components programmatically (wait, let me clarify... the components that ship with Flash 7.0 sporradically support a visible property... some do, some don't...I haven't really discovered any consistancy there). Also, even though Macromedia took the timeto revamp the architecture, there still isn't a nice event model, so you are pretty limitted in what you can do (especially since you are probably going to hand-draw everything, which eliminates a lot of UI customization from your component that could only be done programmatically). This, of course, is probably why the components that ship with Flash have only a handful of properties. You can set text here and there and add some items, but that is the extend of what you can do. Without support for attributes, there is also no way to group common properties together in the property browser (a la CategoryAttribute), but I guess it isn't a big deal when you only have two or three anyway.

Didn't take too long before I was bored with components and moved on to projects. The first thing I noticed was that there is no way to add an item to a project, unless it already exists on the disk somewhere. You can't right click and select "Add New Form..." or "Add New Code File...", you just get one option: "Add File(s) to Project." Looking through the menus, I was able to locate the standard new file dialog, but going through the dialog and creating an item doesn't actually add it to the current project. You must first save the file, then add it manually.

If you're planning on doing a lot of coding in Flash, you probable want to use code (.as) files to store your code. This way, the data isn't baked into your FLA, and you can use an external editor to do your editing. Why would you want to do this, you ask? Because the fact of the matter is that the Flash actionscript editor has always blown chunks and the 7.0 editor is not any better. No auto-complete, no class browser, just visual notepad with some syntax highlighting.

So, my general impressions of Flash 7.0... not impressed. Macromedia has improved a lot of things, but it is still very apparent to me that Macromedia does not understand developers in the slightest bit. How do you add project support but forget to include the ability to add new items to your project? How do you revamp your component model, but forget to include elementary properties such as "visible" in the base class definition? The answer is pretty simple, you just don't get it. Macromedia is still a designer focused company, and Flash is still a designer focused tool. Developers tread lightly...

5 Comments

  • Anyone who has read anything you've ever said about Flash knew this post was going to end badly before starting, so your conclusions aren't surprising at all, what is surprising is that you seem to think you know what you're talking about but the words you've said give away the truth.

    "This way, the data isn't baked into your FLA, and you can use an external editor to do your editing. Why would you want to do this, you ask? Because the fact of the matter is that the Flash actionscript editor has always blown chunks and the 7.0 editor is not any better. No auto-complete..."

    I guess if you include Flash 4 in your "always", I will agree with you about it blowing chunks, but Flash 5 was much better. Flash 6 is a huge step forward and it has autocomplete.

  • Jesse limit him self to "just" Flash....nah ;-)



    I share Jesse's view that Flash 7 is still not enough for developers, true Flash 7 is step in the right direction but there is still work to be done (the fact that you can't edit AS externally is just one example - I have been saying for a long time that AS should away from the FLA file - instead we get external JS files for the IDE API...).



    I do feel that Flash is moving towards a one tool for designer one tool for developer approach but they must as Jesse points out do a bit more (why put a timeline in a developer tool..). Who knows what Royale will bring to this but the whole Java/JSP syntax thing just puts me off......

  • Autocomplete??

    External editor??

    Time line not for developers?



    Would you like a cup of coffee, some spaghietti, or a powerfull developer authoring tool?



    Please, somebody here is able to remake my WebStation multiuser site manager, videomailer, group-videoconference and so on with VS.NET?



    Come on. Develop it.



    best regards.

  • Hi Jesse,



    so you saw a bit of my online interactive environment some minutes ago.



    I think you understood that I was manual typing commands to the app server in real time controlling our two session together via my admin web command line.



    Flash ables me to implement client side of my Application Server, and for me is not huge to attach a line of code to a flash button to request a function...



    Flash is *open*, is perfect for building interactive user interfaces, and is the only one authoring tool with which I can image to develop user interfaces for online services of all kind.



    Post me your links: let me see something like WebStation or WebGest made with VS.NET



    You know, for me the challenge is always open.



    See the world of online services from the server point of view: it's different (but at this time I'm not speaking about MM...)



    best regards.

    Massimiliano Carli

    MC2LABS.com



  • No "real programmer" as you put it would ever close the events panel in VS.NET, which is what I am comparing the IDE to here. Why? Because it provides RAD capabilities. Checking a dialog is a lot faster than hand coding, not to mention less error prone (since you get instant visual feedback).



    Your message boad still needed a boat load of php script, which is exactly my point. Flash in itself cannot stand on its own, unlike the VS.NET, which covers the entire application spectrum.



    I also realize flash has an event model, I know quite a bit about flash, as I have developed the most successful flash file format SDK around. What I said was that it was not nice. Compare it to the real event models found in ASP.NET or Windows Forms and you might begin to grasp what I am talking about.



    Once again, as far as the visible property is concerned, this is not actually found in the base component class, nor are a lot of things that are commonly found in base UI component classes. But, as you seem to have completely missed the point here, I doubt that you have enough experience dealing with real world applications to begin to grasp anything I have said. Of course, the reason Macromedia hasn't gone out of business yet is because there are legions of dumb-asses like you who can't tell the difference either.

Comments have been disabled for this content.