is supported in part by

September 12, 2005

Flash 8: Enhanced Strokes and So Much More

Flash 8: Enhanced Strokes and So Much More
A Biased Review of the New Release
by Colin Moock
Disclaimer: this review is my completely biased, personal impression of Flash 8. If you want to form your own opinion instead of reading mine, visit Macromedia's feature guide for Flash 8.

Remember, if you're ordering Flash 8 you should consider ordering it through an affiliate link to support your favourite site. Details here...

For the impatient, here's my quick take on 8:
Flash 8 is fantastic. I give it an A+ (compare that with the B+ I would have given Flash MX 2004's initial release if I had been doing letter grades back then). Flash 8 is an extremely high quality release with many new "must have" features. Specifically, the features I think most folks will upgrade for are:

-Enhanced Strokes
-Custom Easing Controls for Tweens
-Filters (drop shadow, glow, blur, etc)
-9-Slice Scaling
-Runtime Bitmap Caching
-Video Improvements
-Improved Text Rendering and Control
-Programmatic Bitmap Creation and Processing (BitmapData Class and Filters)

Ok, A+ is a pretty good grade. Let's dig a little deeper to see why I think it's justified.

When Flash MX 2004 was released, I was excited by many of the new ideas (most importantly for me, ActionScript 2.0), but I was a little disappointed with the general quality of the app. Many of the innovations were only partially implemented. For example, you couldn't drag a component from the components panel to the Library. And some fundamental behaviours of the application were changed in ways that proved frustrating for users. For example, the undo system changed from object-based to document-based and "normal mode" scripting was removed completely. Overall, Flash MX 2004 felt a little ragged. The Player was very good, but the authoring tool needed work.

Well, welcome to Flash 8. It's been two years, and Macromedia has the ship back on course, running smoother than ever before. Flash 8's level of quality represents a real commitment to users while its new feature set represents a continued commitment to creative computer-based expression.

Designers and motion graphics professionals will be happy to hear that many of Flash 8's new features are aimed squarely at them--more so than Flash MX 2004, which focused heavily on programmers. If you do a lot of motion graphics or animation right in Flash you'll definitely want to upgrade, especially if you skipped upgrading to Flash MX 2004. Flash 8 finally gives users tons of control over easing (accelerating and decelerating tweens). Position, rotation, scale, color, and even filters can now be eased separately. Did he just say "filters"?? Yes, designers will also appreciate the new bitmap filters (drop shadow, glow, blur, etc) that can be applied to movie clips and buttons. These filters are the real deal, not some vector hacked version like Flash MX 2004's experimental "Effects" feature. The arduous days of importing PhotoShop images to produce bitmap effects are over.

Other designer-centric feature include blend modes, 9-slice scaling, the return of "normal mode" scripting (now called Script Assist), and hundreds of minor stability and usability tweaks (9 resize handles on text fields, yay!). Most of the motion graphics professionals I've talked to expect Flash 8 to reduce their average labour on a job by 25% or more.

For developers there are improvements to the editing environment and the debugger that will come in handy, but of greatest interest to most programmers will probably be the bitmap processing additions to the Flash Player API. See runtime bitmap caching and programmatic bitmap creation below.

If you want a laundry list of the new features in Flash 8 take a look at the following Flash 8 help entries:

* Using Flash > Introduction > What's new in Flash
* Learning ActionScript 2.0 in Flash > What's New in Flash 8 ActionScript

Anyway, I figured the best way to do a review would be to go through most of the important new features and discuss the impact and significance of each. If you want to learn how to use each feature, consult the above help entries. Ok, here we go. Flash 8, feature-by-feature.

Gradient Enhancements
Gradients are now easier to create and edit, and have a few new tricks (more colours, overflow and interpolation options, etc). This feature nicely improves one of Flash's drawing weaknesses.

Object Drawing Model
"Object drawing" is a new mode for drawing shapes. It stops Flash's idiosyncratic shape-merging drawing system from cutting away overlapping shapes. Adobe illustrator users will love this. However, note that the new object drawing mode has to be enabled when using a drawing tool by pressing the "J" key or by pressing the "Object Drawing button" next to the magnet in the Tools panel.

Rectangle and Oval Tool Settings Dialog Box
Alt-click or Option-click the stage with the Rectangle or Oval tool to specify the numeric dimensions of a new shape. This is a minor workflow improvement that's kinda useful, though I would have appreciated being able to set the x,y coords at the same time.

Enhanced Strokes
Square end caps!! (Duh.) Line thickness increased to 200. Mitered line joins. Scale shapes without affecting line thickness. Man this stuff has been a looong time coming, and will make your day/month/year if you do much drawing in Flash. Unfortunately I find the joining is a bit quirky (e.g., sometimes small orphaned lines are left behind when changing or moving line joins). But overall the new strokes are a very welcome improvement. The new line styles are also scriptable with ActionScript, which is great for creating programmatic graphics. Note also that stroke hinting was added to Flash Player 8. Hinting fixes the ugly rounded rectangle corners problem found in older versions of Flash. For details, see Tinic Uro's excellent blog.

Text Handles
Resize a text box without first having to double-click it! (Duh. Again.) Well, I'm glad they finally improved text resizing. Unfortunately you still can't set the size of a text box numerically without also scaling the text. Maybe next version.

Improved Fireworks importer
No comment. (I don't use Fireworks.)

Originally code-named Saffron, FlashType is a text rendering engine that improves readability of pretty much all text in Flash (requires Flash Player 8). Readability is a subtle, but great thing. This is a very important improvement that fixes one of Flash's longest standing problems, and will help the acceptance of Flash as a platform.

Anti-alias Individual Text Fields
Set the amount of anti-aliasing for each text field separately. Set text to "Anti-alias for animation" to make Flash ignore alignment and kerning, which speeds up animation at the cost of legibility and increased filesize. This is a good improvement for motion graphics creators.

## Script Assist
Basically, normal mode is back. I'm sure lots of less-experienced programmers will appreciate the hand-holding from this code-editing helper.

Expanded Stage Work Area
The big grey no-man's land around the Stage in the authoring environment is now bigger, so you can now animate big things into view from off-screen a little easier. I'm glad for the minor improvement here but I'd like to see even more improvements to the work area. For example, I'd like the work area to be infinite (or really huge) and I'd like it to have a map tool that for navigating the work area.

Improved Panel Management
Group panels together and navigate between panels with tabs, like Adobe Photoshop. This is a subtle change that makes the whole app feel more polished, and probably makes you a little more productive.

Single Library Panel
Switch between libraries easily in the same panel while editing a single .fla file. This improvement definitely reduces the hassle of working with assets across multiple .fla files.

Drag and Drop Components to Library Panel
If you want to add a component to your Library, you can now just drag it there. You don't have to first put it on the stage anymore. I'd almost call this a bug fix, not a feature. It should have worked like this in the first place.

Macintosh Document Tabs
No comment. (I don't use a Mac (yet).)

Improved Preferences Dialog Box
Not many people will notice that the preferences dialog has even changed, but it has. It's more organized now. And I'm glad Macromedia cleaned things up a bit--it shows they're dedicated to improving workflow in subtle ways, which adds up to a better app experience overall.

Linkage Options for Bitmaps and Sounds are Now in the Properties Dialog Box
Again, not many people will notice this, especially because the Linkage options are hidden under the "Advanced" button on the Properties dialog. This change doesn't thrill me. I'd personally get rid of the advanced button, put all the Linkage options up front on the Properties dialog, and get rid of the Linkage options dialog altogether.

Object-based Undo and Redo commands
Choose your undo style--either a single undo history for the entire document (Document-level undo) or a separate undo history for each object (Object-level undo). Until Flash MX 2004, the undo system used separate histories for each object. In Flash MX 2004 the undo system changed to a single undo history. Users of old versions complained about the change, so now you can pick your undo style. If you never noticed the change, just use Document-level undo (the default), and don't worry about it. If you want your old undo system back (i.e., the undo system from Flash 6 and older, choose Object-level undo under Edit > Preferences > General > Undo, and rejoice.

Export Keyboard Shortcuts as HTML
Make a web page of the keyboard shortcut set you use! Hm. Maybe some big design house with 37 junior designers and a very anal manager requested this one.

Multiline Support in the Strings Panel
Translated text can now have line breaks. I don't do a lot of work that needs translation myself, but I'm sure there are plenty of folks celebrating at the removal of the very unfortunate single-line restriction that plagued Flash MX 2004.

SWF File Metadata
Give your Flash content a search-engine friendly description and title (under "Modify > Document"). Search engines that look inside binary .swf data can then better rank your Flash content with other kinds of data (e.g., html, pdf, word). Good idea. This is a decent step towards making Flash content more indexable by search engines, but it's a bit fragile because it relies on 1) authors remembering to provide information and 2) search engines implementing a new Flash-specific search routine.

Local and Network Playback Security
File access for .swf files running on the local machine has changed. Locally running .swfs can now access files either on the local file system or over the network, but not both. Projectors are not affected--as before, projectors can access files both on the local file system and over the network.

This new security system adds yet another security-related development limitation, which is a drag, but at least Macromedia is on top of the issues. If your .swf file really *must* access both the network and the file system, you have two options: 1) install a config file on the user's hard drive (or have the user put it there by hand), or 2) have the user mark your .swf file as trusted using the online settings manager at: Flash authors should use the settings manager to mark sections of their hard drive as trusted for development purposes.

For more info on configuration files, see the following entry in the Flash 8 Help: Understanding Security > About local file security and Flash Player > Testing content locally with Flash 8 local file security restrictions > Creating configuration files for Flash development.

On a related note, if you've never quite understood why you need a crossdomain.xml file, take a look at Martijn de Visser's animated explanation here:

Improved Flash Player Detection
This is pretty much just the latest version of the Flash Player Detection Kit (see It's a very good improvement on the previous detection offered by Flash MX 2004 and I'm glad Macromedia has done the right thing by providing the industry with a standard detection system, but I just don't like detection because it fails under too many marginal conditions. Even a detection system that works 99% of the time strands 10,000 users daily on a site that gets a million hits a day. I've therefore discontinued work on my own Flash detector (see

Custom Easing Controls (Flash Professional only)
Complete control over acceleration and deceleration for motion tweens using a graph and as many control points as you want. Set easing for position, rotation, scale, color, and even filters separately. This is *truly* a wonderful feature, bound to really enhance web motion graphics. Motion designers should be salivating at the prospect of adding zippy, bouncy transitions that can even include faux shadow and lighting effects, all rendered in realtime vector goodness. (If *only* each filter could be eased separately from other filters, and easing presets, saving, and loading were supported then this feature would be perfect.)

Filters (Flash Professional only)
Apply drop shadow, blur, glow, bevel, gradient glow, gradient bevel, and color adjustments to movie clips and buttons. "Flash, meet should be able to learn a lot from each other." Basically, these are bitmap-style effects rendered on real-time vectors. I love them. Superb feature. And you can even create filters using ActionScript!

Blend Modes (Flash Professional only)
Blend two movie clips (or buttons) together using the following modes: layer, darken, multiply, lighten, screen, overlay, hardlight, add, subtract, difference, invert, alpha, and erase. Again, straight out of Photoshop. Graphic designers will love this feature, but not as much as filters :).

Video improvements (Flash Professional only)
The list of improvements to video includes: a new video codec (On2 VP6) for better quality video and smaller video file size, improved video import wizard, stand alone video encoder, alpha channel support (transparency in videos!), and embedded cue points for triggering events from specific points in a video. I don't do much video work, but these are all super-sweet improvements that will help push web motion graphics ever closer to broadcast quality.

Bitmap Smoothing
Some issues causing rendering artifacts on bitmaps, particularly with bitmap zooming, have been addressed in both Flash Player and the Flash authoring tool. Generally speaking, this means bitmaps display better, and that's a good thing. This is more bug fix than a new feature, per se, but either way it's good.

Runtime Bitmap Caching
Render individual movie clips or buttons as bitmaps that are not redrawn every frame (rather than as vectors that are redrawn every frame). Runtime bitmap caching can massively improve graphical performance when animating the position (but not rotation!) of complex vector shapes whose content does not change. Hooray! Bitmap caching opens up huge possibilities for games developers and visual artists with complex animations like James Patterson.

Load GIF, PNG, and Progressive JPEGS
Use ActionScript to load the web's most common image formats. Nice! This was a long time coming.

9-Slice Scaling
Divide a movie clip into a 3x3 grid such that when the movie clip is scaled the center section of the grid is resized normally, the corner sections of the grid are not resized at all, the sides of the grid are resized vertically but not horizontally, and the top and bottom of the grid are resized horizontally but not vertically. 9-slice scaling is a tremendously useful feature for creating stretchy user interfaces such as resizable windows or buttons.

File Upload
Use two new classes--FileReference and FileReferenceList--to upload files to a server. You've been able to upload files using HTML for as long as the web has been around. Now you can finally do it in Flash too. I'm actually excited about this feature...I think it could open the door for some interesting collaborative content.

Mobile Device Emulator (Flash Professional only)
Test your Flash Lite content in device emulators, complete with interactive keypads for controlling the Flash content. If you create Flash content for phones or other devices this will save you massive amounts of time and effort.

Various programmatically generated text improvements
Lots of new little things for dynamic text, including control over rendering to improve legibility (TextField.antiAliasType, TextField.gridFitType), kerning, letter spacing, negative leading support and super speedy scrolling (see MovieClip.scrollRect). Control over text and legibility are essential to both motion graphics and application development, so I'm really happy to see these improvements. I think the days of notoriously bad Flash text are finally over.

Programmatic Bitmap Creation
Use the BitmapData class to create bitmaps from scratch at runtime. Take full control over individual pixels, apply filters, perform colour replacement, apply transparency, copy movie clips to a bitmap, and apply distortions using perlin noise, an algorithm for generating visual effects such as ripples and disolves. This is a massive feature that will open up a lot of doors in motion graphics and game development.

Use the ConvolutionFilter class to perform matrix convolution on bitmaps. Used for various forms of image processing, including sharpness, edge detection, embossing, gaussian blur, motion detection, shape recognition, and noise reduction. An important part of many games and sophisticated graphics applications, convolution is very handy to have built into the Flash Player API.

Replaces fscommand() as the new preferred means of communicating between ActionScript and JavaScript or the Flash Player's host environment. Call a method from JavaScript or ActionScript and receive a return value in response! Great stuff. I'm very glad to see fscommand() finally overhauled. It's great to have a more formal and feature rich means of communicating with external host apps.

Other ActionScript additions
Lots of other minor things were added to ActionScript...too many to discuss here, but things like:

* MovieClip.opaqueBackground for making solid movie clip backgrounds
* a Point, Rectangle, and Matrix class
* MovieClip.beginBitmapFill() for filling a clip with a bitmap
* the status parameter of MovieClipLoader.onLoadComplete() for handling 404 messages (file not found)
* and so on and so on

For the full list of what's new in ActionScript, see the following entry in the online help: Learning ActionScript 2.0 in Flash > What's New in Flash 8 ActionScript > New in ActionScript 2.0 and Flash 8 > Additions to the ActionScript language.

Thank you Macromedia!!!
Well that's it for Flash 8, and that's also it "Macromedia" Flash. I suppose it'll be "Adobe Flash" next time around. So I think it's worth taking a moment to stand up and thank Macromedia for contributing so much to the history of computers, the internet, expression, and communication. Flash isn't just a piece of software or a product to sell, it's a means of exploring the human experience. For giving us the tool to conduct that exploration, I believe we all owe a great deal to the passionate, brilliant minds on the Flash team at Macromedia, both past and present. They have been the sage custodians of the Flash platform for the past 10 years, and borne that responsibility with care and invention. Thanks guys! Your devotion is a gift to us all.

Colin Moock

Posted by moock at September 12, 2005 07:07 PM