Category Archives: flash

The Hype Over Hype

I attended Joshua Davis’ Hype Workshop last month at the RMI space in Toronto.

I had a hard time figuring applicability in my daily work life.

So I sat on Hype, undecided what I could do with it. What I missed in Josh’s workshop was the fact that Hype is simply a collection of classes. Use what you want and ignore what you don’t. Hopefully, I’m not the only one with that misconception. If I am, I’m dumber than I thought.

Yesterday I had some downtime as I wait on my friend to get to .NET changes for TattooCapture and decided to manufacture something I’ve always wanted: A class to plot points equally around 360°. Why? Well… that will become clear in the future. In the meantime, that was my goal. Feed it 8 points and it comes back with how many degrees each would be to be equally dispersed around a circle.

It was a pretty simple solution; divide the number of elements by 360. Tada! Then use that degree number within the class to return what degree an element would be. Further, use it to return what radian (what flash uses to calculate degrees) that element would be.

I ended up with the Orbit class right-click and ‘save as’. Usage boils down to importing the class and an instantiation. Then using it’s public functions. Therefore;

import com.orbit.Orbit;

var orbit:Orbit = new Orbit;
orbit.increment = 15; //15 being the total number of elements
var degree:Number = orbit.getDegree(8); //8 being the 8th element
var radian:Number = orbit.getRadians(degree);
//returns the radian value for the 8th element out of 15;

//alternatively, you can piggyback the calculations
var radian:Number = orbit.getRadians(orbit.getDegree(8));

So yeah.

Here’s the first example. Each time you click the start button, the piece will pick a random number of elements, then run through that number and each element on stage in it’s prescribed location. Sweet.

So once I figured that out, I started monkeying around with it, as is my wont. Change the number to see the progress.

In comes Hype.

Eventually, in version 4, I decided to muck about a bit with Hype. I wanted to draw to Bitmap was being done and with Hype, I had a built-in class to do just that. BitmapCanvas. Worked like a charm.

Messed around for another couple of versions and in version 8, added in FilterRhythm and TimeType. So far so good.

In version 10, I added in colorPool. Honestly, it all starts to get a bit silly and really I’m just messing around with minor alterations.

In version 13, I dumped my Event.ENTER_FRAME for SimpleRhythm.

Finally, with some more tweaks, I have this (basically) where I want it. Version 19. I might spend some more time with it, but it’s in a place I like. I left it running while I wrote this post and this is what I got.

click the image to see it full-size

The moral of the story is; If you keep your eyes closed, you won’t see the path in front of you. How’s that for a fortune cookie? I oughta be a writer.

swfobject, IE7 and flash can get along.

Yesterday I got a panicked email from my client with a bug from their client. This sort of tertiary contact is part and parcel of being freelance.

The email contained a bug in my latest project. The bug was;

This is the exact error in IE7. I’m running Flash 10,0,2,54 Debug.

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.utils::MainImporter()
at subaruLegacy/checkFlashVars()
at projectClass()

I love Flash errors. No, I really do. The fact that I can instantly look at this and know precisely where the problem lies is amazing. checkFlashVars is the function I use nearly instantly at instantiation of the entire project to grab the provided variables from swfobject. ie. project language “en” or “fr”, location of the xml content, locations of external links. I didn’t want to need to update this project after delivery so i externalized quite a bit of it for editing outside of flash. Always a good plan.

So back to the bug. What happened is swfobject isn’t passing the flashVars to flash in time. The likeliest reason is the page isn’t loading completely in time for swfobject to know precisely what it’s sending. I didn’t know this at the time, but I obviously knew something was amiss.

In comes Twitter.
wtf is with fp10 and IE7? they not friends? got an email from the client and they’re freaking out.

You want to be concise? Use Twitter.

Nearly instantly, my good friend Chris Pelsor IM’s me and says “We had the exact same problem, hold on.” After over an hour of him cleaning up my html, asking Stacey Mulcahy to join in on the fun, having her ask “Is your code smart enough to know when it’s failed?” and “What version of swfobject are you using? 2.1? Update, Hugh.” and the both of them testing, Chris found the project where they figured out the solution. I don’t want anyone else googling “IE7 flash player 10 not working” like I did initially. So here is the solution.

Obviously, you’ll need a div called “content” or whatever you are determined to name it.

I had to admit a couple of things to two people in who’s opinion I respect;
1. I know very little about html. I look stuff up, I copy, I paste.
2. I know even less about css. Copy, paste.
3. No, I don’t know why there are three different methods of commenting in the html. Copy, paste.
4. I agree, I should learn. I’ve written it in my agenda.

Estée Lauder win

Update September 25 Turns out Estée won in the “Beauty and Cosmetics” category at the OMMA Awards a few days ago! This thing is a monster.

I’ve found out the site I worked on, Estée Lauder, has won;

two WebAward awards (Outstanding Website, Best Fashion Website)
one Internet Advertising Award (Outstanding Achievement In Internet Advertising)

It’s also an entry at Cannes! (Cosmetics, Beauty & Toiletries)

More after the jump;

Managing a team of five Flash developers and co-ordinating remotely with the New York office was a true test of my managerial abilities. The site went down to the wire, but in all, I was really pleased with the efforts of my team. Todd Fraser and Stephan Tanguay, especially.

Not to mention, it was my very first AS3 project. I’ve learned a ton since then in implementing AS3, but I cut my teeth with this project. My favourite self-built classes, TextFormatter and MainImporter were first coded for Estée Lauder. I owe Organic, a debt of thanks for being able to work on this project.

My focus, beyond management, was the Skin Care Diagnostic Tool

Honestly, what better way to start the day than to find out work you’ve done won awards?

In case I forget, FOTB, here I come!

Life/Career Update

Yesterday I quit as Director of Rich Media for henderson bas. There were a number of suprised comments that I wasn’t there very long, 5 weeks. Sometimes you can recognize a bad fit in a short period of time. As I did. Better to end it than to drag it out.

On that note, I’ve rejoined the world of freelance! Although I’m apprehensive about a leap of this kind, I am also excited about the new possibilities. I’ve already found my first gig and looking forward to this chapter in my life.

If you have anything flash-related, big or small, send me an email. I’d be more than happy to do the work.

Facts about Fees

I forgot to blog about the re-release of Fee & Processes on Bank of America. Now known as Facts about Fees.

This had several fun challenges. The flash was loaded and reloaded by the html wrapper every time the user changed sections, so I made extensive use of the SharedObject to store visits. This way, the user gets a different experience from the video on the first visit and subsequent visits. Quite fun.

There were some alterations to my base once I left Organic, but it’s still functioning and I’m quite pleased with the site on the whole. Take note of the Asked & Answered windows with their cross-linking and the control you have over the video, muting, volume, etc.

Plus, I incorporated pre-existing AS2 demos from the original site and brand new demos from the InfoCenter engine. This piece is rife with yummy hugh goodness.

FoTB 30 days away!

Things are really motoring. I’ve moved over to my friend John Breton’s server. John is a .NET guy and knows his junk, lemmetellya.

I have never done so much using webservices. Registration, login, updating, uploading, friending, messages, world locations, etc, etc. I have exclusively been using Carlo Alducente’s WebService class. It’s been invaluable and I don’t know where I’d be without it.

Soon enough I’ll be making use of Senocular’s Transform Tool.

Interested in being a beta-tester (or as I like to call it, Better Tester)? send me an email. I hope to be ready for full-scale testing in about a week. Many hands make light work, as they say. Many eyes make amazing work, I say.

The end goal for this is to be finished by Flash on the Beach where I am presenting my session The 10 Best Excuses to NOT do Amazing Work. I hope to see you there! I did say I would light a monkey on fire to compete with Quasimondo’s presentation happening at the same time as mine.

I’ve been updates about development on Twitter : tattoocapture

News wheniwas19 styles

It’s been over a month since my last post. Things are afoot, as they sometimes are.

  • I’ve left Organic to take the position of Director of Rich Media with henderson bas. Todd Fraser, a Senior Flash Developer at Organic came with me. Very cool.
  • I’ve joined the cool kids and started a Twitter account
  • I’m working on the site I’ve been talking about for the last almost 3 years. I’ve mentioned it a few times. I renamed the site because Camgasm might seem funny, it’s just not appropriate. Follow the development over Twitter
  • Not coincidentally, I am working on my presentation for FlashontheBeach in conjunction with building the site. “What? A presentation on how to get your work done, and you’re doing work?”, you ask. “Yeah, it’s silly, but true.”, I answer.
  • I am super happy to have a friends like John Breton. He has been instrumental in being my go to .NET and DB guy. Without him, I’d likely still be sitting around moping about how I can’t make Also, I lucked out that Jason Munger will be doing some tattoo designs for me. He’s a super-talented guy and I’m lucky to count him as a friend.

    Many thanks, John and Jason.

    Suffice it to say, there have been a lot of late nights and new challenges. I’m going to be looking for beta-testers sooner than later. If trying out something new appeals to you, let me know.

    Flash on the Beach Brighton '09

    I’ve blogged a couple of times about speaking at Flash on the Beach Brighton in September.

    Finally I took the time to fill out my session description.

    I’ve titled it The Ten Best Excuses to NOT do Amazing Work. Have you ever had an idea but found yourself unable to get started? Or, once you’ve started, unable to work on it? Or, once you’re working unable to finish?

    There are ways to get past these little stumbling blocks before they become huge hurdles. I have run into these roadblocks from hurdles from stumbling blocks. I look at these situations with suspicion and wonder how much is self-manufactured and how much is legitimately stopping me from getting my work done.

    Honestly, this title could end with just “work” as opposed to “amazing work”.

    Tickets are going fast!


    I am so excited about speaking at Flash on the Beach (or FoTB, depending on your interest in acronyms) Brighton.

    Get your tickets here.

    Suffice it to say, this is a must attend conference.

    Besides that, it appears there’s a contest for a giveaway pass to the conference.

    To quote
    Put an FOTB09 badge on your site, link it to us, then fire us an email at to let us know the URL and we’ll enter you in a draw for a full 3 day pass!

    Now that’s a good deal.

    Keyboard Events

    There was a comment by Muaad for help on how to capture Keyboard Events in AS 3.0. I figured instead of filling up a comment box I’d just go ahead and do a little post on it.

    Keyboard Events and capturing them has been around for a long time. I’m going to assume Flash 4 days since I’d built a little animated typer in Flash 4 and can’t recall doing it Flash 3.

    Like everything else in AS 3.0, you need to import the appropriate class(es);

    For capturing Keyboard Events, you’ll need;

    Add an eventListener to the stage for whatever you want to capture KEY_DOWN, KEY_UP, etc etc.

    List of Key Codes on Adobe

    Source files

    There you go, Muaad.