Wednesday, March 11, 2009

ActionScript 3 Sucks

Yes, the title rings true for many. So, you've been working with Flash for 5-10 years. You thought you had it down. Pretty amazing the cool crap you could do with no computer science degree or any programming skills at all. You were just one of those whimsical creative types that was totally blown away by how quickly you could build interactive animations. Macromedia had built Flash just for you. In no time you were building little rocket-ship games or maybe even galleries with kick-ass progress bars. 50 bucks an hour to make this thing spin, that thing fade and a little button on the bottom to skip past it all. Life was good.

One day in 2006 (you were probably still using Flash 8) you start hearing rumblings about ActionScript 3.0. Flash Player 8.5/9 supported it but there really wasn't any real documentation about it. Those programmer nerds sitting down the hall from you who had been toying with OOP in AS2 were jiggling with glee. Still it didn't make much sense to you why you had to declare things like private variables or create half a dozen .as files for a banner that had a button that glowed on rollOver. You figured like all things AS, no point in trying to learn it until Moock writes a book about it. We have some time...

Then one day you crack open your new version of Flash CS3 and are prompted to create a new ActionScript 2.0 fla or ActionScript 3.0 fla. The line has been drawn. Choose your destiny.

Oh, ActionScript 3.0, the 3 must mean it is like 2 but with a few more neat thingys, let's try that. A few minutes later:

score = 0;

Access of undefined property score

box_mc._x = 20;

Warning: 1058: Migration issue: The property _x is no longer supported. Use the DisplayObject.x property instead.

box_mc.onRelease=function(){
        getURL("http://asarsenal.blogger.com)
}

1180: Call to a possibly undefined method getURL.

Warning: 1090: Migration issue: The onRelease event handler is not triggered automatically by Flash Player at run time in ActionScript 3.0. You must first register this handler for the event using addEventListener ( 'click', callback_handler).

Warning: 1060: Migration issue: The method getURL is no longer supported. For equivalent functionality, see flash.net.URLLoader. The flash.net package also contains package-level functions navigateToURL() and sendToURL().

Ok. This isn't good. Google help me. Oh look! Here's a few blog postings on how putting actions on objects is totally different. There are now event listeners, event objects, functions needing strongly typed arguments and return types. Hmm, I just want to like link to a website??? I've been doing this for ages with like 2 lines of code.

Well folks, if any of that rings true for you, I have lived it too. Pretty soon a quiet a uproar began. ActionScript 3.0 is too hard (that's what she said). The response was overwhelmingly:

  • Adobe doesn't give a crap about designers.
  • I'm done with this, I'll stick with AS2.

Adobe has said more or less "ActionScript 3.0 is a more strict version allowing for the production of robust and large-scale internet applications."

My response has been "Strict means painful and I make things quickly that look cool for 6 months and then evaporate".

Regardless of the developer outcry and my own personal reluctance, Adobe with the release of CS4 has laid their stake in the AS3 game. Now tools within the Flash IDE are dependent on the use of AS3 such as bones and 3d transformation. People getting into Flash are going to want access to these tools. Most Adobe AIR developers are probably going to be using AS3 as well.

I've gotten by for awhile with excuses like:

  • AS3 is by no means necessary
  • AS2 is supported by more versions of the player and banner traficking companys
  • AS2 is quicker (because I know it)
  • AS3 is only good for big projects with multiple developers

I have been doubly troubled by the switch because in addition to being a Flash developer I also teach it. I have seen first hand how simple concepts like functions, for loops, conditionals etc. take time for people to grasp. Now on day one of "make the button work" its a whole new game of breaking down every aspect of the event model. Its a lot to grasp. In a 3 day AS2 class we have been able to impart a tremendous amount of practical knowledge to people using it for the first time. It is clear that AS3 is going to be a much stronger hurdle for new comers. It has been mind-numbing for someone like me who has used AS2 for a long time.

It Doesn't Suck, Its Just Different

One of the greatest travesties of Adobe (besides offloading their local help files to their slow servers) is calling it ActionScript 3.0. As mentioned earlier, a version number change usually means new enhancements. When dealing with most software or languages, version 3 is just better than 2 and has a few more bells and whistles. This is not AS2 Plus. It is a whole new beast. I would have totally endorsed something corny like PowerScript 1.0 or Clumpy 1.0 (now you put your code in a clump or a clump of clumps). Just draw the line so the HR people know if the project really needs a Clumpy or AS2 dude.

Now that the complaining is out of the way, I have to come clean. I've spent a lot of time trying to get my brain around ActionScript 3.0. I've had to approach things totally different. I've consulted books that left me more confused (Why All ActionScript 3.0 Books Suck :coming soon) and have cursed the Adobe ONLINE "no-help" more times than I count. I've painstakingly tried to rebuild many little things I've built with AS2. Slowly it has become clear... AS3 isn't that bad. At times it does take more code to do something simple, but it has plenty of advantages, and you really have no choice:)

Why I'm Here

I know the troubles of jumping ship to AS3. I hope with this blog to offer support and info on getting started with AS3. I am still battling with the clumpy or OOP aspects of AS3 but hope to overcome them someday soon. I am very excited to harness the potential of AS3. I urge you start playing with AS3. You will get it.

I thank all the other bloggers, forum members, and authors out there who have so freely dispersed critical information that has saved my butt. I hope to return the favor and get others on the path to learning. This blog will hopefully be a great tool to other developers as well as a means to document my own journey.

For futher reading on the debate about AS3, you must read Colin Moock's Articles:

ActionScript 3.0: Is it Hard
http://www.insideria.com/2008/01/actionscript-30-is-it-hard-or.html
Here Moock openly and clearly defends most of the criticism against AS3.

The Charges Against ActionScript
http://www.insideria.com/2008/07/the-charges-against-actionscri.html
An upfront, no punches pulled outline of how to make using AS3 easier for everyone. Most of his valid claims were unfortunately ignored by Adobe with the release of CS4.

Stay tuned for:
All ActionScript 3.0 Books Suck
Tips to Getting Up to Speed with AS3

-carl

No comments:

Post a Comment