I knew I was in for trouble when I took my job, I just didn’t realize how much. Working for a quirky, cool advertising agency in Ann Arbor in interactive production meant one thing: Flash. Ever since I had started reading about web standards and web programming, I had adhered to the basic mantra: “CSS-and-(X)HTML-are-best-because they-are-standards.” I admit to parroting this a little bit more than necessary, but it landed me a job. Now, I have reasons. I have ammunition. Most importantly, I have angst.My first few months at Perich, I began my Flash tutorial under the guidance of their current “guru,” whom as the lessons became more intense (and I started applying my ECMAScript knowledge to ActionScript), we quickly reversed roles of teacher and student when it came to programming. It wasn’t long until my yogi fled the company before the more ludite members of staff realized what was going on. At about the same time, Flash 8 had just hit the market.
Flash 8 seemed like it would make sliced bread a distant memory. Not only is Flash the only browser plug-in capable of paying more than lip service to valid (X)HTML, it had so many features:
- Cross-platform video!
- XML parsing!
- Legible text!
- CSS styling!
- HTML parsing!
- ECMA-compatible scripting!
- Photoshop-style shadows and bevels!
- PHP and database interaction!
Wow! Can you believe it? I thought about redesigning The Book of Ryan into a Flash-based blog. Then I realized the most potent feature of Flash as of yet unnoticed: Flash 8 is the most most buggy, inconsistent and obnoxious interface I have ever used. That, combined with the frustration of dealing with a semi-standard, poorly-documented binary format.
So now I am, somewhat ironically, studying usability and human-computer interaction while working part-time. What I will document for you now are the ten most egregious problems I have run across so far, and my proposed solution.
Aside: Since I develop on a Mac, these complaints may tend toward Mac-centric. I don’t apologize. Windows developers may or may not have these problems, but in my experience quality and consistent user interfaces in Windows are never at issue: they simply do not exist.
- Text Editing. In developing ads and in programming in general, you work with text a lot. A lot. Embedded in my muscle memory are the basic commands used when working with text. For example, ⇧⌘← will take you to the beginning of a line of text, and the shift-command-arrow combinations in general are good shortcuts for having to jam the keys several times, or reach for the mouse. Oops. These don't work in Flash.
- Mouse Wheel. According to Macromedia, Macs don't have mouse wheels. Ever. The Windows version of the Flash plug-in supports the
onMouseWheelevent, which is very helpful for more usable applications. But you can't really blame them for forgetting-their application only supports mouse wheels in the main window. No one ever wants to scroll through the timeline.
- Clicking in the Timeline. So imagine you are in Finder. Or Word. Or any other application developed in the past ten years. You click on an item, something like … oh … a keyframe. Then you click on a different item of the same type. What do you want to do? Odds are you wanted to change the selection. Not in Flash. Clicking multiple keyframes will add them to the current selection. Get over yourself Macrodobe-that's what the command key is for.
- Sub-Pixels. I've spent hours on this problem, and still haven't found a good solution. Flash lets you use fractions of percentages. With its default settings, you can very easily have text or vectors positioned at (10.1,9.8) instead of (10,10). While this lack of precision isn't inherently bad, the problem is that Flash renders unpredictably any line or text not placed exactly on a pixel. This leads to blurry, unreadable type, and foggy-edged vector art.
- Recalculations. Aware of the sub-pixel problems, you decide to go through your document and set all of your text on the exact pixels. Click on the text object, click in the X position field within the "Properties" dialogue box, round the decimal, then hit tab. Surprised? Flash knows better than you. You didn't really want that text at (10, 10), you wanted it where it was before: (10.1, 9.9). Change it again and (hopefully) it will stick. A program should never recalculate a user-set value if it does not simultaneously provide an error or alert as to why. For extra kicks, try the "Transform" panel: it allows decimal rotations, but only at 0.5 intervals. Is 9.0% too little and 9.5% too much? Sorry.
- History. Did you know you can undo a copy action? Have you ever desperately wanted to undo a double click? You can in Flash. The "History" panel gobbles up memory in exchange for the most and useless descriptions of its actions. Some simply won't undo. Undoes in the timeline will not redraw until you scroll or click on it (missing that mouse wheel now, huh?). Undoing actions within objects is the worst, however, as undoing or redoing outside of the scope of the movie will garble the display of the clip or force a ridiculous zoom level.
- Lack of Keyboard Access. The keyboard is practically useless in Flash, mostly because the vast majority of functions must be done with the mouse (Flash is one, amongst many, great reasons to get a FrogPad). Arguably Flash has too many functions to give to the keyboard (ever used BBEdit?), but even were that the case, Flash still misses a number of useful commands:
- Giving focus to individual panels
- Selection objects
- Accessing the timeline
- Changing between active documents
- Find and Replace. Site-wide and mass changes in one or many documents is getting quite a bit easier. All text and HTML editors have some version of a Find/Replace, many even implementing complex regular expressions. For example, in order me to change the a color blue to green across an entire site, I merely have to enter the following in BBEdit:
Find: (blue|#00F|#0000FF|rgb(0,0,255)) Replace: #0F0
I can even Find/Replace over multiple documents at once. In Flash this would require a massive flurry of clicking and changing, by hand, every instance of said color.
- Lack of Integration to other Web Technologies. You can't use your CSS files to style a Flash document (don't believe the hype, the Flash CSS parse is terrible) and have fun dynamically generating Flash with a server-side language. Once a user clicks inside a Flash window, you lose access to most other built-in browser functions, and when my boss asked one of our Flash vendors about our Flash-only site's Search Engine Optimization, he laughed aloud.
- Terrible Documentation, The problem isn't a dearth of instruction, it's that there is too much. That and the overall poor quality of the documentation in general. I learned web design from reading W3C specs. I've become an expert at searching for reliable sites and solving problems. But with Flash, there is no single, comprehensive specification or manual. Help sites are poorly versioned, and even the Flash ActionScript Dictionary does not provide good documentation for precisely when a function was implemented, and the nuances of how different functions work in different players. Most tutorials are written for Flash 5 or 6, and articles about how to program a modern Flash application that is still backwards compatible is nigh-impossible to find.
I am outraged that Adobe has not released a single patch or update to their 8.0 version of Flash. I haven’t even found rumors or a place to document known bugs and issues. Are you reading this, Adobe? If so, here’s my advice: kill Flash. Dump SWF. Make the next version of Flash Player backwards- compatible, and move to SVG. You already have an excellent SVG design application in Illustrator. All the format needs is plug-in penetration and development environment. You’ve got them both. Kill the crap SWF format and move on.
The market is ready. I don’t think I’ve ever rooted for Microsoft before, but I pray their Sparkle will be competitor to Flash. I hope Apple or Google or the Open-Source community will create a product worth corporate support. The only reason Flash is thriving is that it has no true competitors. Once one arrives, with a better developer experience and documentation, Flash will flounder and fade.
Just wait. I know I am.