The Drop-Down Menu and Macromedia/Adobe Flash

Buy this Book at! So this question came to me last year, “Can you help me make a menu in Flash?” I have not worked with Flash for so many years I forgot how to properly answer this question. The adventurous female designer that asked me this question was clearly impressed with another’s Macromedia/Adobe Flash site. But admiring someone’s Flash site is like admiring the imperial grandeur of a sparkling city: when you never know about how many innocent people were killed to “fund” the project, you can get lost in admiration without really understanding the cost of implementation. Flash is, at its heart, an animation tool. This means that it was not originally designed to save labor as much as being a cel-by-cel digitizer for illustrators who are used to painstaking.

So my answer to the question, “Can you help me make a menu in Flash?,” is (annoyingly) another question: Do you know what a MovieClip is? The reason why I ask this question is because whatever menu you are going to build in Flash it is going to be in a MovieClip symbol. So you can’t even get started without understanding what this Flash symbol is. Hint: think of a MovieClip like a folder inside of a folder—a Flash animation inside of an animation.

After years of baking in Visual Studio, NetBeans and Eclipse, I had literally forgotten that you can’t make a menu in the “new” version of Flash by just dragging something out of some palette onto the Stage. My first clue is that Yahoo! would not waste their precious time building Menu and MenuBar components in Astra when Adobe already had them. My second clue is the sad-but-active third-party market of Flash component sellers hawking menu components. My third clue was that this stack of books about Flash does not have a “menu” topic in the table of contents and/or the index:

  • Macromedia Flash 8 Bible: Robert Reinhardt, Snow Dowd
  • Flash Hacks: 100 Industrial-Strength Tips & Tools: Sham Bhangal
  • Adobe Flash CS4 Professional Classroom in a Book: Adobe Creative Team
  • Foundation Flash CS3 for Designers: Tom Green, David Stiller
  • Adobe Flash CS3 Professional How-Tos: 100 Essential Techniques: Mark Schaeffer
  • How to Cheat in Flash CS3: The art of design and animation in Adobe Flash CS3: Chris Georgenes

The most effective explanations for this missing information about menus are:

  • Menus are MovieClip symbols with a bunch of buttons in them. It follows that the “menu” concept would be filed under “button symbols.”
  • Menu structures are preferred in the container hosting Flash—not within Flash itself. This is a design that I prefer because on the Web I like to use as much AJAX as possible—which subordinates Flash on the page (which is why Macromedia was not be motivated to feature my work back in the day when it mattered).
  • A serious interaction designer would take the concept of the “menu” to a new level. From my experience, a site like really did (through hard work) take the concept of the menu to a new level—back in the late 1990s.

Eventually I found a book that reserved an entire section on “pull-down” menus (filed under “buttons symbols”), Macromedia Flash 8 Advanced for Windows and Macintosh: Visual QuickPro Guide by Russell Chun. This was one of the few times when buying a brand-new book about obsolete software in a bricks-and-mortar bookstore actually made sense to me. The Flash developers like my adventurous female designer are not going appreciate my code-centric work in Adobe Flex (which is yet another way not to get noticed). These adventurers demand the intense labor of working with timelines, sprinkling in just a little bit of code here and there. The next time I get a question like this, I’ll be ready (because, even with Flash CS4, these adventurers will still be using Flash-8-style techniques to avoid coding horrors).

An honorable mention goes out to Todd Perkins, his book, Adobe Flash CS3 Professional Hands-On Training, mentions menus on page 311—so gets proper credit!

Résumé Drill

Buy this book at! I have not updated my résumé in years. I have been doing time in the same W2 labor camp for almost ten years. Since I’ve known me for quite some time, I can tell that I am interested in summarizing my skills because my damn-near ten years of ‘exile’ has produced a revised and improved view of my personal technology plan. This writing here is like a little fire drill to exercise my ability to succinctly communicate the scope of my information technology concerns.

My IT Concerns by Operating System

There are two operating systems that are used for my development work: Microsoft Windows and Ubuntu Linux. Microsoft Windows is required because of its native support for the .NET Framework and Microsoft Office file formats. Ubuntu Linux is required because of its friendly relationships with the Java Runtime and the Apache HTTP Server. It is extremely important to emphasize that these operating systems are maintained by organizations that encourage and discourage technologies. In the “real world” of the IT business we must pick our “battles” wisely and not recklessly “fight” such organizations by using technologies that are not “approved.”

Buy this book at!My IT Concerns by Software Environment

There are three major ‘software environments’ that are of my concern: the .NET Framework, the “Standard Edition” of Java with its associated runtime and the XAMPP ‘stack’—a grab bag of traditional Linux technologies featuring Apache, MySQL and PHP (supplemented by my use of the Zend Framework and YUI).

My IT Concerns by Shell Language

There are two ‘shell’ languages that are of my concern: bash scripting and PowerShell. My bash efforts drive directly into PHP-related file management (featuring rsync) and the Java runtime for console applications (featuring JAXP solutions). My PowerShell efforts are currently very minimal with a few XCopy deployments for Visual Studio.

My IT Concerns by General-Purpose Software Language

These are the general-purpose software languages that are of my concern: C# and Java. These two languages are the preferred choice after working through BASIC, FORTRAN and Visual Basic (which implies I am familiar with Visual Basic .NET—and very familiar with VBA). A future language to explore might be F#.

Buy this book at!My IT Concerns by Domain Specific Software Language

These are the domain-specific languages of my concern: t-SQL, JavaScript (under AJAX), PHP, XSLT and XAML. These result from working through MS-SQL (for Microsoft Access) and ASP (for Microsoft Internet Information Server). Currently, there are no plans to explore new domain-specific languages outside of ones based on XML.

My IT Concerns by HTTP Server

There are two HTTP Servers of my concern: Apache HTTP Server and Microsoft Internet Information Server (IIS). Do note the glaring omission of any Java-based server technologies. Also the presence of IIS here—coupled with my concern for .NET—implies that I am actively using ASP.NET.

My IT Concerns by Database Management System (DBMS)

There are two DBMS products of my concern: Microsoft SQL Server and MySQL. It is not technically accurate to include SQLite in this list but it is definitely worth mentioning because I also use this database frequently!

Buy this book at!My IT Concerns by Client-Interface Technology

There are three client-interface technologies of my active concern: AJAX-based HTTP clients, XAML-based HTTP clients and Adobe-Flex-based HTTP clients. All of these concerns share HTTP as the means of transporting data for human-readable viewing.

It important to emphasize that I also divide these concerns into two use categories: clients for intense data editing and clients for mostly-read-only scenarios. The mostly-read-only clients needs to be available to a wide audience—this implies that AJAX and Flex work well here. In my considered opinion, the intense-data-editing client is suited for XAML technologies like Windows Presentation Foundation (WPF) and Silverlight 2. This means that I intend to produce data-editing tools for a small, specialized set of users (supporting a mostly-read-only audience through a decoupled publishing system). This position is not in agreement with the current trend of social, “Web 2.0” applications where “everyone” can be reader and writer.

It is also important to mention that since my commitment to building clients exists, this means that I have working knowledge of traditional design software products like Adobe Photoshop and Adobe Illustrator. I am also quite skillful in the field of sound design but this area leaves the scope of this writ.

My IT Concerns by Integrated Development Environment (IDE)

There are three IDE products that are of my concern: Microsoft Visual Studio, Eclipse Foundation Eclipse and Sun Microsystems NetBeans. I prefer to work with Eclipse and NetBeans in a Linux-based graphical user interface like Gnome or KDE.

Did I miss anything?

What would be really strange (for me) is to take the time here to set healthy boundaries only to find out that there is this whole other world of crap that I do in IT that I am unaware of… that would be literally unprofessional. My intent here is to capture and control my behavior and find out exactly what I am doing so that actually can profess and produce with potency.

Eclipse Ganymede 3.4 Install

This installation journal entry for eclipse follows “Getting Eclipse for My Way” from month 2, 2007. It builds upon the work recorded last year. These steps and pieces for this year’s install are:

Having ‘lived’ with this new situation for a few days, I can say (once again dammit) that I am disappointed. First of all, the Ganymede Error Log is brimming with crap I don’t care about—actually the number of errors is just overwhelming so to say ‘I don’t care’ is another way of saying ‘I am overwhelmed.’ Syntax coloring is missing from PHP files (I thought this might be a collision with Colorer-take5 but does not seem to be).

Eclipse has thousands of moving parts that must be tended to by hand. NetBeans, by the way, automates a lot with an installer. I see this article, “Set Up Eclipse PDT 2.0 On Eclipse 3.4 (Ganymede)” which is another lengthy Linux adventure that awaits…

For Adobe Flex: Looking at eclipse in a New Light

Buy this book at!My Adobe Flex machinations from the last 15th and the last 13th of this month caused me to reevaluate my eclipse strategy. The new Europa release under the Web Standards Tools Project 2.0.x is a great start and only needs the PHP Development Tools of the PDT Project to get me positioned for my Flex-related eclipse tweaks. So to summarize my ‘base package’ from the eclipse foundation is this:

Note that I elect to download the packages instead of using the Update Manager because the Update Manager is not complimented with an uninstall feature (or eclipse cannot be automatically “rolled back” to previous states). This lack means that I am forced to turn to the file system to manage eclipse—so why not be there from jump?

And speaking of the eclipse file system, these are my important notes about eclipse filing conventions:

  • What eclipse calls a “Workspace” is a folder used to store Project metadata and resources. (It is important to remember that the Resource Perspective is the default Perspective in eclipse—not a Java Perspective—this information will come in handy for my Flex2 projects.) In my (other) world of Microsoft Visual Studio, the “Solution” is the equivalent of the eclipse “Workspace.” Both of these constructs provide a grouping container for the Project.
  • One of the most important Project metadata folders is (in Linux) the .metadata/.plugins/org.eclipse.core.runtime/.settings folder under the given workspace. Here, most of the *.prefs files are kept—where the most detailed of my editor settings are kept.
  • The File > Import > Select an import source: Existing Projects into Workspace command simply copies a project from an ‘external’ location into the active Workspace folder. Open the File > New > Project… > Wizards: General folder and select Project to generate a Resource Project.
  • See “eclipse 3.x SDK (WTP): Editing the Recent Workspaces List for the Select a Workspace Dialog.”

Now, for the Flex tweaks (this is based on the assumption that you have downloaded the free Flex2 SDK from Adobe):

  • Do not use the ASDT plug-in until it fully supports ActionScript 3.0! Use the EclipseColorer plugin instead! I really can’t use any more exclamation marks on this one! The EclipseColorer plugin supports ActionScript!
  • Configure eclipse to recognize *.mxml as an XML type. See “Setting up Eclipse for Flex”—you might need to pick up the schema for Content Assist at
  • Install flex2ant to automate builds against the Flex2 SDK from Adobe.
  • Use the default Resource Perspective type for open source Flex2 projects in eclipse! See the picture at right for a view toward this practice.
  • Add the *.swf file association to the Web Browser under Window > Preferences > General > Editors > File Associations. When you find this unsatisfying, something like flashout might help.
  • Unfortunately, I am unable to toggle spellchecking on and off without going deep into the Preferences… dialog.

When you switch from the Resource Perspective to the PHP Perspective you might see red squares instead of recognizable file icons for *.as files. When you go to the file system (again) to check the .log file you might see stuff like this:

!ENTRY org.eclipse.php.ui 4 10001 2007-11-20 00:18:03.330
!MESSAGE Image data not available: URLImageDescriptor(bundleentry://509/icons/full/obj16/jcu_resource_obj.gif)

For several hours I assumed that this error came from me uninstalling ASDT and breaking something. This error came up again for me with a clean install! This ‘forced’ me to make a new flex workspace, separate from the php one.

Download my first framework Flex2 sample for eclipse at

The Day’s Table of eclipse/Flex Resources

Getting Friendly with Eclipse Workspaces

Darron Schall writes, “I can’t believe I didn’t know about this 2 years ago.”

This article (and the comments) introduces me to the ongoing ‘controversy’ among eclipse people about Working Sets vs. Workspaces.

Upgrading Eclipse Peter Hendriks is basically telling me that one really can’t upgrade eclipse.
Eclipse: Managing Multiple Eclipse Installations This article delves into the possibilities after one realizes eclipse is not upgradeable.
Compiling Flex Applications in Eclipse This is the Todd Sharp article that introduced me to flex2ant.
Setting Up Eclipse For Flex 2 This is the Todd Sharp article that told me where to find the MXML schema—since it is no longer available from Adobe.
Tutorial: Beginners Guide to Getting Started with AS3 (Without Learning Flex) This is the article that let me really know the flex compiler better than ever. You don’t have to agree to not “learning flex” to read this article.

Confronting ActionScript 3 and the Flex SDK

The Flex SDK in GnomeThis thang,, has 28 streaming audio presentations (and more on the way) that use the audio presentation framework developed by Bryan Wilhite (me), of, back in 2005. The release of this framework was announced (by me) in December of 2005. Almost immediately, I was not satisfied with this ‘framework’ and this lack of satisfaction leads me to ‘confronting’ ActionScript3 and the Flex SDK today.

This is a ‘confrontation’ because my “bitter” intent is not to purchase/support Flex Builder until it is clear that Adobe, like Microsoft with Word 2007, is making me an offer I can’t refuse. These are my points for not investing in Flex Builder:

  • My nascent assumption is that Flex Builder (from $249US) is for a “design firm” with a formal production pipeline—which means that Flex Builder is a management tool.
  • My experience with eclipse-based, Open Source Java culture should permit me to avoid buying more Adobe products through ‘coercion.’ I pay money for Photoshop because I want to—even as I used the GIMP to prep the image in this Blog post. The last time I wanted to buy Flash was when it was version 5. I get tired of paying Macromedia/Adobe to produce incomplete software development products. It feels like I am paying them to learn how to build software tools—this is just too hard for me knowing what Microsoft does with Visual Studio and what the Eclipse Foundation does for free. And the punch line is that Flex Builder is built on top of eclipse! My assumption is that Adobe is trying to make Flex in particular and its developer tools story in general similar to what IBM is doing with its unimpressive Websphere black box.
  • Since my IT powers cross almost fluidly from client to server, I don’t need to cram tons of “features” into client applications when a server should be doing some of the work. My style is to build small, simple client applications (unless you are paying me and seducing me to do otherwise). My assumption is that Flex Builder is overkill for my “simplistic” needs. In fact, my UI-design investment gives AJAX (via YUI) the lion’s share.
  • Microsoft gives away “Express Editions” of Visual Studio. Now the indignant upper-class males that ran Macromedia might get some sympathy for saying that they “can’t afford” to give away a Flex Builder Express Edition. But old-ass Adobe gets zero sympathy from me for doing precious little for the open eclipse community.

So, again, the great thing about a journal is that I can look back on this post months from now (literally searching myself) to see how ridiculous or insightful my person may be. So the stake in the ground today represents the claim the a new, more satisfying Songhay System ‘framework’ can be built without me crawling back to Adobe begging to pay 249 bucks for the pleasure of not driving myself insane.

The following table of resources assembles the information needed for this confrontation:

ASDT Eclipse Plug-in

The non-fatal problem is that this wonderful tool does not support ActionScript 3 as it barely betas for AS2. Watch the news feed for any AS3 news.

When it becomes clear that Adobe actually took steps to make Open Source tools like this eclipse impossible to use with Adobe products, then at least someone will have syntax highlighting in eclipse—like the syntax highlighting for Flex in Vim.

Mike Potter of Adobe: “Why open source developers can be excited about Flex “First of all, the free Flex SDK includes the source code for the Flex components, and allows anyone to compile a Flex application at no cost. You are free to modify the Flex components as you need to. As a developer, you can now build a Flash application in VIM, run it through the compiler in the SDK, which works on Linux and Mac OS X, and build a .swf file.”
compiler/flex.vim : Compiler plugin for Adobe Flex 2 compiler

“A simple Vim compiler plugin to run ‘:make’ for Adobe Flex 2 MXML files… Currently, it works only with ‘mxmlc’.”

The implication here is that I am willing to ‘retreat’ into Vim from eclipse before buying Flex Builder.

Flex 3 SDK and Eclipse working together “I am still using the ASDT plugin for syntax highlighting. …ASDT may try to warn you of problems with the package declaration but you can ignore this. Hopefully ASDT will become more AS3 friendly soon.”
Developing for the Flash Platform using Linux “There are several possibilities for creating Flash Content under Linux. The best choice for you depends on what language you’d like to program in, and what ActionScript Virtual Machine you’d like to target.”
Setting up Eclipse for Flex This article explains how to use the MXML XSD with eclipse (among other things). In case you cannot find this schema at Adobe (hmm…) you can pick up one from Like ASDT, this schema is in the AS2 timeframe.
Creating a Simple MP3 Player using ActionScript 3.0 and Flex 2 Articles like this one make me wonder why people are not using a combination of MediaController and MediaPlayback—which seem to be ‘designed for’ video applications (but can work for MP3). I’m pretty sure I tried to experiment with these controls as well (but failed to journal about it!)
Playing an external MP3 file using MXML Another strange article from 2006 on the Adobe site that also does not mention MediaController and MediaPlayback.
Flex xml mp3 player An excellent open MP3 player at Google Code. I can’t use it because it is ‘too’ open—as it does not allow the obfuscation of MP3 sources to discourage near-casual unauthorized copying.