Case Study

Goals

Before even deciding on a project to build, I new that I wanted to do something using a technology that I was unfamiliar with. Actionscript 3.0 seemed like a worthy candidate, as I had seen some of the possibilities that were now available and felt learning the next installment of Actionscript before the final release of Adobe Flash 9 would give me an edge in the market.

One of the features I, like many others, was excited about was the ability to read sound levels and create animations based on that. This can be accomplished in serveral video editting applications such as Adobe After Effects, but never not in real-time. And so I decided on the concept of an application which allows users to upload a song and visualize all or part of the audio.

By allowing users the ability to save their images and create different pieces of artwork, I hoped to create a project that caught the attention of a few people and showcased the new features that Flash can offer. If a small community of users that wanted to keep sharing their images via gallery upload developed, then all the better.

Problems

Technology

The first step in this project was learning a new programming language. Actionscript received a major overhaul and there has been a significant amount of additions, removals, and alterations to the language.

Furthermore, there is no help file included with the Flash 9 alpha release. To learn this language, I had to refer to the online language reference, as well as books and video tutorials in order to familiarize myself with the new programming environment.

Finally, no components were included in the release, which meant that before I could even begin to visualize any data, I needed to create all of my slides and buttons from scratch.

Copyright

Another issue which I had to be conscious about was the issue of intellectual copyright. As the program would allow users to upload MP3 files, I needed to make sure that they remained on my server for only a short period of time. This would make sure that I wasn't hosting an materials which I did not have the right to distribute.

Solution

After gaining a firm understanding of the new development environment, I began by creating all of the components necessary to make the application run as I had originally intended. However, many usability pitfalls began to present themselves halfway through the development stage, which mean that I had to take a step back and plan the project through more carefully. Once I was able to get all necessary classes together, I began to hook them all together within my primary timeline class.

In dealing with the potential copyright issues, I set up a PHP script that would clear out all the files within a specified directory. I then created a cron job which was scheduled to run this script once every hour. Attempting to visit this upload directory via browser will also initiate this script to prevent any file theft and also save bandwidth.

Result

Although I plan to continue development on this project, I've gained the knowledge I sought and have certainly learned the importance of proper planning when developing an entirely object-oriented application. For now, users still have the ability to save their visualizations directly to their computer using a JPEG encoding class which takes a bitmap data object, runs it through a JPEG algorithm, and sends a byte array to a PHP script which creates the actual JPEG file. Users can also upload their work to a gallery and view the results that other users have generated.