Slashdot Log In
Actionscript: The Definitive Guide
from the make-it-work-in-lynx dept.
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.
Re:thanks for the example (Score:1)
The designer has the choice to design whatever he wants to. The reader/customer has the choice of complaining and not coming back. Which one has the upper hand depends on the line of business. If you post insider stock tips in Flash5 format, people will come back no matter how awful the UI. If you are trying to sell a product, you will lose customers.
Re:Flash is a dead end (Score:5)
Re:Flash is a dead end (Score:2)
Re:uses for FLASH that DOn't SUCK !!! (Score:1)
It's asking a utter novice to jump straight to multi-threaded programming (albeit a much simpler version, but still). Made worse by the fact that most of the who make Flash aren't and never will be programmer material. And the entire user interface of the software is about as clunky as it can get - especially the ActionScript editor.
I certainly wouldn't mind a bit less reliance on playing Where's Waldo with the mouse hunting for the right floating window and be given an AutoCAD style text input box to enter commands. But somehow I don't see that happening.
Re:Fight Death Penalty (Score:1)
--
Flash is love. (Score:1)
It's all about the cross browser.. It's a non-stop nightmare in HTML(DOM, Javascript, etc, etc), but it's all one love in Flash.. If your platform doesn't support it, you're not in a desirable demographic anyway (you jaded linux nerd you)..
If there was a way, I'd probably do sites in raw postscript..
Flash is a front end (Score:1)
Sure there's some terribly implemented Flash sites. Sturgeons Law states that 90% of everything sucks.
Re:SVG! (Score:1)
That's what i'm trying to say, SVG is here NOW! Just because it hasn't yet been ratified as an official standard doesn't mean it isn't a very well implemented and useable tool, today. In fact, the on thing the W3C is waiting for before ratification is implementation experience.
Tools? Here! [w3.org]. Adobe Illustrator, CorelDraw, Jasc WebDraw, KIllustrator, Gnome's Nautilus/Gill/Dia, and the list goes on and on!
You are right though, when people think of animated web sites, they do think of Flash. I think with time, SVG will change that. SVG is more web-centric, having been desiged around DOM scripting and CSS support is the clincher. If any technology is cool enough to fight the uphill battle againsed Flash, SVG is it. There are even Flash to SVG converters already (see link above).
I am using SVG today, and I am happy with it. Before writing it off, take a day to play around with it and Adobe's plugin (by far the best and most complete implementation /so/far/).
SVG! (Score:2)
Graphics in XML, and is a standard from the W3C (or will be soon
http://www.w3.org/Graphics/SVG/Overview.htm8 [w3.org]
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
Anyhow, forget Flash, check out SVG!
phone book flash (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?
Re:Flash can be useful (Score:1)
I was delighted to see that I had Flash after my most recent upgrade of my home Linux system.
Delighted for a few days. I disabled it within a week.
Not to dispute your point; if I went to a site for the purpose of watching the animations, then sure, I'd turn it back on. But for most sites it's just another of the many annoyances that are pushing actual content off the Web.
--
Re:A flaw in your reasoning (Score:1)
Re:A flaw in your reasoning (Score:1)
i didnt say there _weren't_ other reasons, i didn't say i wouldn't like to see one, and i didn't say there was anything wrong with dogmatism..
all i said was that _if_ the only reason you're writing it is so that it will be free, realize that you aren't doing anything helpful, merely being dogmatic.
it works fine for me, so i have no need to write one. if im on bsd, i use lynx and could give a shit about flash, and when im on windows, it works great in mozilla.
Re:thanks for the example (Score:1)
I've only done one (small) flash job, but what do you do if the client *insists* on Flash? Tell them to take their money elsewhere (especially when you can charge a premium for doing it, because clients expect to pay more than they do for a properly designed HTML site)?
As a user, I hate Flash sites (and most Flash animations) myself, but as a developer I'm willing to hold my nose for the money
BTW, I wish I'd been able to get this book when doing that Flash job. All the books on Flash at the bookstores seemed pretty bad, and very little stuff on ActionScript -- I'm not in the US, and it would have taken longer to get the book than I had to do the job. The sample chapters on his website certainly helped me
Re:Flash is a dead end (Score:1)
Not me. However...
There's no way to pull the descriptions or the prices from the server (this is important if you're dealing with pricing changes)
Doesn't Generator handle things like this?
there's no on-the-fly loading of images (meaning a 5 minute pre-loader for people on dial in connections)
Ditto. Also, can't you put group different images in external
Re:physics vs. other stuff (Score:1)
Java applets. No weirdass plugin required.
The authoring tool is not free in any sense, but the players are, and the file format is open.
The players aren't Free. I can't go to Macromedia and get myself some Flash player source.
--
buzzwords, Re:physics vs. other stuff (Score:1)
In fact, I'll just rebut your response to the second criticism of flash. You miss the point that those areas where Flash might possibly be stealing ground from Java are exactly in those areas where Java has been found to be inappropriate. Cute animations and framing techniques add zero value to the content of a site. Content is presumably what brings the eyeballs there in the first place. And cute animations and framing techniques are what Flash is used for, they don't add anything to a site except for hey-cool. If you want to make a real UI you'll have put a severe limit on extensibility if you turn to Flash.
Hey-Cool will interest your viewer for about 2 seconds, thereafter it is an encumbrance.
Flash is replacing Java for unnecessary applications (nice thing for Java)
As for OOP discussions in the book (the only on-topic part of your post, the rest was just bad advocacy) I thought the reviewer made the point that the book was rare in that it
mefus
--
um, er... eh -- *click*
Re:buzzwords, Re:physics vs. other stuff (Score:1)
On the client, Flash is superfluous fluff, yet another tab to click on at Bugtraq without any real gains.
mefus
--
um, er... eh -- *click*
Re:uses for FLASH that DOn't SUCK !!! (Score:1)
If it's used in that way, yes. But there's still the problem that the format is only machine-readable. That's a big problem.
- Scott
--
Scott Stevenson
WildTofu [wildtofu.com]
Re:Anti-Art == Annoying (Score:2)
"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 [wildtofu.com]
whoa, chill out, ho. (Score:1)
Re:SVG! (Score:1)
and is a standard from the W3C (or will be soon :-).
And therein lies the problem. Flash is here NOW! And it's what people are using. Where are the fancy point-and-drool SVG creation tools?
Whenever people think of 'fancy animations' in websites, they think of Flash. It's got the marketshare, and the plugin comes pre-installed on most of the major browsers.
I agree that SVG is going to be A. Good. Thing., but it's already fighting an uphill battle! The integration of Flash with XML means that we can create dynamic data-driven sites now, without waiting for the SVG standard to be ratified.
Re:phone book flash (Score:1)
Re:A flaw in your reasoning (Score:1)
Lack of security an issue (Score:2)
Some sites are really only possible with Flash, for example my company developed a game for Cornetto Soft [cornettosoft.at] (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
Mod parent up! Informative! [nt] (Score:1)
Flash is a dead end (Score:2)
A flaw in your reasoning (Score:2)
Re:uses for FLASH that DOn't SUCK !!! (Score:2)
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).
Flash can be useful (Score:3)
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.
Will it teach me to do things like this ? (Score:3)
Kung Fu Fighting in Flash
Flash vs. Java (Score:1)
Is this a correct assessment of Flash's capabilities?
And for it to be truly open, there would have to be more than third party file generators like the Perl modules that you refer to. There would also have to be 3rd party client/plugin implementations available. If you're in anyway constrained to Macromedia, then it's not open. Are there any non-Macromedia made plugins/players?
But, the next question: What's the difference between Flash and Shockwave? Macromedia seems to do a very poor job of explaining the difference. It seems like there's multiple products (and multiple plugins) using the same name.
I remember downloading the Shockwave plugin in order to view a certain site and found that I was still unable to do so. I had to go back to Macromedia's download page and get yet another plugin to get the site to work.
Re:Flash is a dead end (Score:1)
there is a great project with really good mailing list which provides c library with wrappers for using the libraries for c++, python, perl, php or ruby... so you are able to generate swf (aka flash) files from and as a open source projects...
you can find everything on:
http://www.opaque.net/ming or
http://sourceforge.net/projects/ming/
there is also another project on:
http://www.the-labs.com/PerlFlash
an interface of libswf.a (which was written by Paul Haeberli) for Perl called Perl Flash (Flash.pm)... i tried that one long time ago and it worked, but prefer python to perl so i quit it
i almost forgot... olivier debon did GPL flash library which comes with three freely redistributable tools (just for linux):
netscape plug in
stand alone player which can play movies on root window so its suitable for screensavers
KDE screen saver tool
you can find it on:
http://www.swift-tools.com/Flash/
you can still hate bad flash sites but check if there are done by open sourced tools just in case to protect you of contradictions in your mind which sometimes could trigger some real bad psychosis
Re:SVG! (Score:1)
Yes, SVG is here now, and because it is XML, it is easy to edit on the fly (which is good).
However, AFAIK you cannot integrate it with sound, and when I was experimenting with the Adobe Illustrator SVG export, I found even the compressed SVG files (SVGZ) to be around 4 times the size of an SWF of the same image.
Re:Widespread use of flash (Score:1)
Re:Widespread use of flash (Score:1)
Flash 5 has extensive printing support (Score:1)
With Flash and good design technique - and where doesn't good design technique come into play? - you can easily specify what should be printed, and how. If necessary, you can just abstract the text from the screen display and reformat it (hidden) for print. When a user prints something, then that user will get something that looks good and is usable on paper. Flash doesn't supply designers with quite as much hand-holding as many /.'ers seem to think it does - in its own little system, you still need to use good design / architecture practice. Just like anything else.
It's rare. (Score:2)
Mondo Mini Shows [mondominishows.com] 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.
yes, there is a GPLd flash plugin (Score:2)
--
News for geeks in Austin: www.geekaustin.org [geekaustin.org]
Re:It's not because you can, that you should (Score:2)
- Vince Flanders [webpagesthatsuck.com]
- Jakob Nielson [useit.com]
- Interface hall of shame [iarchitect.com]
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.User expectation (Score:2)
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.
Re:Flash is a dead end (Score:5)
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 [eskimospy.com]
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 [skipintro.com]
It's not because you can, that you should (Score:4)
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 [arsdigita.com]. Phillip even practices what he preaches on photo.net [photo.net].
Re:thanks for the example (Score:2)
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.
Mod down Flash flames, mod up book comments (Score:2)
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.
physics vs. other stuff (Score:2)
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 [flashgap.com] or Flash2XML [tivano.de]. 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 [artathome.org]
Re:A flaw in your reasoning (Score:2)
Sun at least makes the Java sources available, if under a somewhat annoying license. And there are third party implementations of Java.
Re:Flash vs. Java (Score:2)
Re:physics vs. other stuff (Score:3)
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.
thanks for the example (Score:4)
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.