Slashdot Mirror


Actionscript: The Definitive Guide

Reader Brian Donovan contributed the review below of O'Reilly & Associates' ActionScript: The Definitive Guide, which he says is a "must have" for anyone working on Web animation with Flash. Offered under the condition that you please not make your site utterly dependent on Flash, of course;)

ActionScript : The Definitive Guide author Colin Moock pages 672 publisher O'Reilly & Associates rating 9 reviewer Brian Donovan ISBN 1565928520 summary Complete and authoritative. Check the author's site book site (http://www.moock.org/asdg) for sample chapters and code.

What it is, why you'd want it Actionscript, the programming language that's been supported in the Flash player and authoring environment since Flash version 4, is exhaustively described in a new title in the Definitive Guide series from O'Reilly. Written by widely-recognized web developer Colin Moock (http://www.moock.org) and edited by Bruce Epstein (author of Director in a Nutshell and Lingo in a Nutshell), the book lives up to the hype.

Moock divided Actionscript: the Definitive Guide (A: tDG) into 3 sections. "Actionscript Fundamentals" covers the language itself (variables, the Actionscript datatypes, how to declare and use functions, etc) in a way that's accessible to newbies without boring everyone else. "Applied Actionscript" is shorter and has a more conversational tone, explaining how to externalize your code, the ins-and-outs of making smart clips, using text fields as form fields in your movies, and debugging. The "Language Reference" is basically the Actionscript Dictionary from the Flash 5 Actionscript Reference Guide (ARG, pronounced "arrgghhh," similar to the noise that one inevitably makes when forced to refer to same) on steroids. In fact, it would almost be worth the full price of the complete book all by itself. Code is sprinkled liberally throughout. Included are four appendices (resource urls, a keycodes reference, Flash 4/Flash 5 backwards compatibility advice, and a table listing the differences between Actionscript and Javascript/ECMA-262).

What I liked Although some constructs present in both Javascript and Actionscript (like the arguments object) that managed to go completely unmentioned in the ARG are discussed, the "Actionscript Fundamentals" section is not a retread of the basics of the ECMA standard. There's a whole chapter on events and event-handling in Flash, including a comprehensive treatment of movie clip events. The chapter on OOP in Actionscript is the first real discussion of object-oriented Actionscript programming that I've seen outside of a few posts to a Flash programming mailing list. The detailed coverage of the stacking order of movies and movie clip instances is priceless -- Figure 13-4, "The complete Flash Player movie clip stack" is the clearest visual representation of movie and movie clip instance stacking available.

In the "Applied Actionscript" part of A: tDG, I got the most mileage from the discussion of the different methods of pulling code out of movies and making it more reusable (import from file, #include, shared libraries, and smart clips). Most of that material was already available in separate tech notes at the Macromedia web site (and, to a lesser extent, in the ARG), but it's great to see it brought together in book form.

When I got to the "Actionscript Language Reference," I did a quick page count. It weighed in at 50 pages lighter than the "Actionscript Dictionary" in the ARG, but manages to be more complete and more useful. This could be due to the fact that the pages in A: tDG are covered with text while the "Actionscript Dictionary" pages sport oversized inner margins and whitespace galore. Code is plentiful here, since the entry for practically every Actionscript object or class includes an example script fragment that is generally longer and more useful than the corresponding snippet (when one even exists) in the ARG. Where it's warranted, bug information is included, identifying specific problems with the implementation of the specific Actionscript element in the Flash 5 Player (pinpointing differences in behavior between builds when differences exist) and suggesting workarounds where possible -- the sort of feature that saves coders mountains of frustration of the "it's 4am and I'm tired?why isn't this working?!" variety.

The bottom line

I would have liked to have seen more space devoted to optimization/performance (somehow, code optimization got lumped in with file size considerations in the "The Bandwidth Profiler" section in Chapter 9: "Debugging"), but if it sounds as though I'm nitpicking here, it's because I am. For anyone working with Flash who is interested in taking off the training wheels and developing in "expert mode," this book is a must-have."

You can purchase this book at Fatbrain.

24 of 76 comments (clear)

  1. Re:Flash is a dead end by Anonymous Coward · · Score: 5

    The Flash format (SWF) IS an open standard.

  2. Re:Flash is a dead end by Trepidity · · Score: 2

    SWF (the flash format) is an open standard. The reason there is no good Free Software implementation of an authorship tool is that nobody has written one. There's some Perl scripts floating around that can generate Flash animations, and some attempts at apps to author real ones, but Macromedia's tools are still the best, by far. That's not a fault of closed standards, but merely Macromedia outdoing the open-source competition.

  3. SVG! by HRbnjR · · Score: 2

    SVG - Scalable Vector Graphics.
    Graphics in XML, and is a standard from the W3C (or will be soon :-).
    http://www.w3.org/Graphics/SVG/Overview.htm8

    If you haven't played with SVG, I highly recommend taking a look. Not only does it make it easy to author graphics in a text editor, but you can generate them with XSLT, or even better, programatically in code. Besides the powerfull integrated animation features, they expose a DOM so you can script them with Javascript (or eventually in Mozilla with Python, Perl, etc). Let's not forget the main feature, that they are scalable...so they can scale from a handheld screen size, up to a 2025 model 8000x6000 resolution monitor - allowing you to author truly device independent sites. Oh, and like any good web technology they are accessible too, and the text can be extracted from the graphics for text only dispay (you can even copy and paste right off the screen). Another great thing is that you style them with the same CSS style sheets you do your web site, so you can change the colors and styling of your graphics along with your HTML. Oh, and don't forget you can create SVG font files too!

    I will also plug Adobe, who if you are running Windows or Mac (not Linux :-(, have released version 2 of their fantastic SVG viewer, which has brilliant conformance for such an emerging standard.
    Anyhow, forget Flash, check out SVG!

  4. phone book flash by cpeterso · · Score: 2


    Sorry, but your Flash phone book is less useful than a simple alphabetical list of names in HTML. A user cannot scan the names or search for someone's first name only. What if you don't know what department someone works in? In your design, the person must manually open, visually scan (no Find In Page searches allowed here!), and close each job department! What if a user doesn't have Flash installed?

  5. Re:Anti-Art == Annoying by TheInternet · · Score: 2

    I'm not looking for the most flashy web site. I'm looking for the web site that loads fastest, gives me the information I want, and lets me click the Exit button without flashing a million things in my face.

    "Dave, your interest in art is irrational."

    You probably don't like books with pictures, either. :)

    Believe it or not, there are people that like sites that look nice (gasp!) and want more than raw text. If we were computers, we wouldn't care -- but since we're human, we can appreciate art, entertainment and creativity. Especially when we're crawling through some really boring material.

    Now granted, there are times when the site design is so out of control that it actually hampers your ability to get to what you need. But surely there is a happy medium between russian submarine and parade float.

    Personally, I don't use much Flash, largely because the format forces me to use applications I don't particularly like, and makes dynamic content generation either difficult or expensive. However, the extremist viewpoint that websites are just about information, and that design is irrevalent is really wearing thin. If that was the case, I think it would have been gopher that caught on, not HTML.

    - Scott
    --
    Scott Stevenson
    WildTofu

    --
    Scott Stevenson
    Tree House Ideas
  6. Lack of security an issue by PGillingwater · · Score: 2
    For me, one of the biggest issues is lack of security in the client. It's too easy to download a SWF file with WGET, and decompile it to see what the programmer intended. Of course it's possible to use HTTPS to secure the session, but there seems to be a serious lack of a crypto API or even hooks to allow one to easily be written.

    Some sites are really only possible with Flash, for example my company developed a game for Cornetto Soft (it's in German, but you don't need it to play the game) which accesses a database on the server side. Such games are incredibly difficult to develop with DHTML. We tested this with Netscape and IE, and I can confirm it works with Linux too. We even made a pure HTML version for those who use Lynx!
    --
    Paul Gillingwater

    --
    Paul Gillingwater
    MBA, CISSP, CISM
  7. Flash is a dead end by AirLace · · Score: 2

    Flash animations only frustrate end users. Sure, it's not fair to judge a technology by its misuses, but it's difficult to avoid thinking of all those awful Flash based sites 'designed' by people who can't be bothered to learn html. But my main problem with Flash is that there's no Free Software implementation which means it can't be bundled with Debian. The Web is all about open standards, and we shouldn't really be allowing proprietary systems like this to make it big.

    1. Re:Flash is a dead end by veddermatic · · Score: 5
      HUh?

      The Flash file format is open.... go write some perl that can generate Flash files and go nuts bundling... oh wait, someone already did write open source perl that can generate Flash files.

      I have seen some really bad ugly animated GIFs. We should not use the GIF98a format EVER, since you can make ugly, useless things with it. Heck, I've people use the BLINK tag and design really ugly HTML pages... we should get rid of that too!

      Yes, Flash makes it easy for any idiot to make really bad, annoying sites. Then again, FrontPage, Dreamweaver, and GoLive do the same for HTML.

      Good Flash can be an expressive design media, bring animation to the Web (try doing an animated cartoon with sound in GIF89a =) and with Flash 5, can lead to very powerful web-based apps that interact with live data form a variety of sources... check this thing I did for the intranet of my last job:

      http://www.eskimospy.com/contentPages/phone.html

      It's Flash that pulls XML data from the company database (tho this "public" version uses a flat file with fake data) and generates this on the fly, telling you who's in the office with the colored desks and where people sit... this whole thing took me less than one day to design and code, and was live less than 12 hours after I thought of the idea. Sure, You could do it in Java (but in less than 12 hours?) or DHTML (with 4 code-bases and 11209771207 hours of testing in every browser on every OS to make sure it works) but this was easy to make, and even the Linux crew in the programming dept. are happily using it today.

      Is Flash over-used and usually poorly done? Yes. Should Flash be blamed for people not having a clue how to use it? Nope. Don't shoot the tool, shoot the people who use it when they shouldn't be.

      Have a nice day.

      PS: This is a site I love that I think expresses your frustration perfectly: Skip Intro

      --
      Department of Homeland Security: Removing the rights real patriots fought and died for since 2001
  8. A flaw in your reasoning by AirLace · · Score: 2

    Java is an open standard. Sure there are open Java implementations like Kaffee (sic) but none of them are worth their weight in salt (and electrons are light)! In a similar vein, no matter how free and easy it is to create Flash animations, if you have to use a proprietary viewer to view them, then there is indeed no free implementation.

    1. Re:A flaw in your reasoning by janpod66 · · Score: 2
      There are lots of reasons for wanting an open source viewer besides dogma. For example, the Macromedia-supplied viewer crashes under Konqueror, and it doesn't run at all on some open source operating systems. Sorry, but a "free binary" just doesn't cut it.

      Sun at least makes the Java sources available, if under a somewhat annoying license. And there are third party implementations of Java.

  9. Re:uses for FLASH that DOn't SUCK !!! by isaac_akira · · Score: 2

    Chances are the people who make the Flash content don't know the slightest bit of programming

    Umm... Isn't that the point of this new book? =) I know the flash designers at my work are excited about it, because they WANT to be able to do all the nifty programming stuff, but they don't know how too (I've looked at the manuals and the flash books they have already, and they suck at explaining how to use actionscript -- I hope this book is better). Any mildly intelligent person can learn how to progam well. Just takes effort (and ideally a good teacher/book/friend to help you over the rough bits).

  10. Flash can be useful by fhwang · · Score: 3
    Yes, almost all the Flash out there is worthless, time-wasting eye candy. (The best argument of this is Jakob Nielsen's Alertbox column "Flash: 99% bad".) There's a lot of untapped use, though.

    I have a friend who does a lot of hardcore Flash work. (He's apparently enough of an expert that some folks asked him to narrate an instructional video on the subject.) He's convinced that Flash can do what client-side Java was once pushed for: Highly specialized UIs for specialized goals, using more fine-grained control than you can get through HTML.

    I would be unconvinced, except I had seen something he had done: It was a site that let users design their own Nokia cellphone faceplate. It was a basic painting program using a faceplate-shaped painting surface, and then you could save your design and order it. The Flash app was integrated with an industrial painting machine, which would actually spray out a copy of your faceplate, and then you'd get it in the mail in a few weeks.

    Flash is so commonly misused that it's easy to assume it's an entirely worthless technology. But in the right hands, it seems like it can be very useful.

  11. Will it teach me to do things like this ? by blakestah · · Score: 3


    Kung Fu Fighting in Flash

  12. It's rare. by Animats · · Score: 2
    There are about ten good Flash sites on the web. All the others suck.

    Mondo Mini Shows uses Flash well as an entertainment medium. But fighting your way through all the banner ads, popups, Flash menus, and other crap before you get to the shows makes you realize how awful Flash navigation is. Yes, it's really cool that you can have a scrolling menu that scrolls while you're clicking on it, but it's only cool the first time.

  13. yes, there is a GPLd flash plugin by StandardDeviant · · Score: 2

    it's right here on swift-tools.com (SWF-->SWiFt). For the link wary that's http://www.swift-tools.com/Flash/ . The site has all sorts of other cool SWF-based tools too (like an analog of Generator that doesn't cost 20 bajillion dollars per CPU, I think it's free if you display the little link button, US$100 otherwise).
    --
    News for geeks in Austin: www.geekaustin.org

  14. Re:It's not because you can, that you should by MousePotato · · Score: 2
    Too things. First you missed a great opportunity to bash the 'Mystery Meat' Navigation that a lot of flash designers think is acceptable (good god man, a button that brings up a 3d icon and no text label as to where it goes or what it does is Just Plain Dumb®). Second, after reading Phillip G's most excellent works people should go read; Well those should be a good start. I couldn't verify the links (my ISP's DNS is borked and the only pages I could pull this morning are slash and cnn) Sorry if they don't work but I am sure you can read them in google's cache if the sites are down.

  15. User expectation by fleener · · Score: 2
    The core problem with Flash is one that Macromedia cannot fight, even with all of their recent usability gimmicks... People prefer familiar interfaces - ones that operate according to their expectations. Those expectations are based on how billions of pre-existing web pages already function.

    Flash allows designers to create unique interfaces. Flash designers create what they want, not what people want. People do not want to learn a new interface and new functioning conventions with every site they visit. Flash is doomed unless its implementers conform to some basic communal standards.

  16. It's not because you can, that you should by duvel · · Score: 4
    Although Flash is undoubtedly an interesting implementation to get an end-user solution for not-too-static websites, I'd really appreciate it if all how-to's of this kind of technology would spend the half of their pages in explaining

    why this shouldn't be used too much

    that forcing a surfer through an entry-tunnel to access a website is Bad Practice (tm)

    and that most sites are actually being visited for their content, rather than their flashy look (no pun intended)

    A very interesting point of view on this subject can be found in Phillip Greenspun's Guide to web publishing. Phillip even practices what he preaches on photo.net.

    --

    I have a photographic memory for numbers. I know almost a hundred of them.

  17. Re:thanks for the example by WildBeast · · Score: 2

    not to mention that you can't bookmark a particular page in a Flash based website. Flash is really awful and I don't have the patience to wait for it to load.
    Some companies have their whole website in Flash, I just can't understand that. How do they expect to generate any revenue by frustrating users?
    For all of you flash designers; STOP! you're pissing the hell out of me and many other users actually.

  18. Mod down Flash flames, mod up book comments by mblase · · Score: 2
    And with that out of the way:

    If you do any Flash development at all, this book is wonderful. I know that O'Reilly can put out either good or bad stuff, depending on what the subject matter is. So I was hesitant about this book, but the preview chapter on O'Reilly's site looked good.

    I told my officemate, the other scripting guy who had already told me to start learning ActionScript for Flash 5, that this book existed. He ordered it online not long after. I borrowed it to look at while I was doing a little coding practice/toy-building of my own.

    I was trying to figure out why I was importing XML data and it wasn't parsing the correct number of nodes; Macromedia's shipping ActionScript book wasn't that useful. I opened O'Reilly's, looked for the XML object, and before it even got to the methods and properties I was treated to a short introduction of how to use the XML object, through a short function that would take any XML it was given and parse out the whitespace. Turned out that was my problem all along; ActionScript was reading the linebreaks as empty text nodes.

    The book not only gave me two functions to solve this problem, it told me which one was faster, why, what built-in ActionScript method would do the job, why that method wasn't documented, and how I could detect whether that method would be available to my end-users.

    All that, and I only cracked the book for two pages worth of help. I can't wait to read the rest of it.

  19. physics vs. other stuff by rfsayre · · Score: 2
    It's too bad discussion of OOP is so limited in this book, I was looking forward to it. I've found flash to be a very interesting to program in. I really enjoy being able to create objects by drawing and/or coding in the same environment. It's often overlooked that Flash has some pretty advanced OOP stuff going on, like inheritance built right into the interface.

    Unfortunately, Flash books rarely discuss such things. Most of them are devoted to making UI thingys or physics algorithms. Worst case, you've got UI thingys and physics together (navigate my website with a parametric EQ!).

    Flash does have some great effects, my favorite is that it gets new types of people programming. It's too bad that /. readers will keep their no doubt keep their blinders on. On Slashdot, there seems to be three main gripes about Flash:

    1.)Flash websites are badly designed.
    It's true, Flash sites are often badly designed. The thing is, they're often trying to accomplish fairly complex goals. A DHTML site trying the same type of thing is bound to be at least as bad, if not worse.

    2.)Flash is unnecessary.
    For you, maybe. Don't forget that Flash is taking over a lot of territory from Java applets rather than HTML. Which would you rather have?

    3.)Flash is not Free
    The authoring tool is not free in any sense, but the players are, and the file format is open. People are doing some really cool things with SWFs on the server side, like JGenerator or Flash2XML. While I agree it's unlikely that the authoring tool will ever be open source, there may one day be a linux version, since there will certainly be a MacOS X version. Anyway, I'm not convinced that Open Source could create products that compete with Adobe or Macromedia. It's possible, but it hasn't happened yet (I like the GIMP too, but it's no PhotoShop), especially when it comes to publishing.

    Art At Home

    1. Re:physics vs. other stuff by janpod66 · · Score: 3
      Don't forget that Flash is taking over a lot of territory from Java applets rather than HTML. Which would you rather have?

      Java, without question. Java has a real GUI toolkit that behaves in ways people expect of GUI toolkits. Flash is all about looks, but usability of user interfaces written in Flash leaves a lot to be desired. From a programming point of view, I also prefer Java: it's not as easy as Flash programming, but ultimately, it's more powerful and you can do a lot more in Java.

      But, yes, Macromedia very much would like to take over the applet space with their product. And by providing something that looks spiffy and is easy to get started with, they may well succeed, no matter how many corners they cut.

  20. Re:Flash vs. Java by janpod66 · · Score: 2

    The kinds of things people have written in Java as applets are a PDF viewere, a TIFF image viewer, 360 degree surround image viewers, optimal travel routing, MPEG and video decoders, interactive graph layout and visualization, and lots of other compute intensive stuff. It works. It often works so well that you don't even notice it. Java has grown up and is a fast, full-featured programming language (if you are still running JDK 1.1 in your browser, upgrade to 1.3). Flash has an easy-to-use but slow, limited scripting language that you can use to produce great animations and replace web forms, but do little else with.

  21. thanks for the example by janpod66 · · Score: 4
    with Flash 5, can lead to very powerful web-based apps that interact with live data form a variety of sources... check this thing I did for the intranet of my last job:

    Let's see, when I go to that site, it says "Loading and parsing XML... please be patient." and then it just sits there. There is no error message and now way of figuring out what's wrong.

    When I open it in IE5, I do indeed get some kind of nifty looking display, something that would look swell on a set for StarTrek or The Matrix. Trouble is, it isn't very useful. It ignores my font preferences, so fonts are way too small for my display. The scrollbars don't look like scrollbars. The whole thing doesn't resize. I can't print it. And instead of responding instantly when I click somewhere, it animates. Let's not even talk about accessibility for people with disabilities. In fact, I have seen a number of sites that attempt to use Flash as some kind of "responsive" and "interactive" UI, and they all share the same problems.

    So, thanks for the example: you have provided an excellent example of why Flash is a bad standard to use for writing web-based applications. You presumably invested a lot of time in building this thing, but while it looks nice, what you wrote ends up being considerable less useful and less user friendly than straight HTML and images.