Braavio public launch

We’ve now offically launched Braavio to the public. Now anyone can leverage this great branded recruitment platform. The website has been updated with a ton of new content including a comprehensive overview of features and new pricing plans.

Find out more at


Flex Toggle Switch Spark Skin

With Flex 4.6 Adobe introduced a new mobile component called the ToggleSwitch. This is a toggle button that uses an interaction paradigm made popular with the iPhone. Unfortunately it is a Mobile component and using it in a desktop application or anything under Flex 4.6 requires some workarounds. In addition, as it's designed for a mobile context the skin is not written in MXML but rather in pure actionscript. This makes customizing difficult.

These limitations made me to decide to write a Spark skin for a Spark CheckBox that functions in the same way. It can be toggled by either clicking/touching or by sliding the toggle. It can be used in any Flex 4 application including desktop applications. That means it also doesn't require Flash Player 11 like Flex 4.6 does.

By default, it uses the labels 'Yes' and 'No'. To be able to define any label just use the ToggleSwitch class which subclasses ToggleButtonBase so it can be used in place of any CheckBox or ToggleButton. It includes selectedLabel and deselectedLabel to define the two labels used. This allows for easier customization of labels as opposed to Adobe's implementation which requires a whole new skin.

Right click for source.

You need Adobe Flash 10.2 to view this.



Starling Performance Enhancements

I had previously written some performance tests comparing ND2D and Starling with each other. Starling seemed to lag behind quite significantly. Since then the library has seen a couple of performance enhancements. I've posted some new tests below using Starling 0.9.1. It's still slightly slower (especially as ND2D is automatically smoothing the bitmaps) but the changes have definitely brought it up to a respectable speed. I had to increase the amount of sprites from 2000 to 10000 to be able to see the difference.


Starling Framework Released

Today Starling was released. It's a new open source Flash framework for running 2D content on the GPU. It's Adobe supported and tries to mimic Flash's native display list. It's great news for game developers for whom it is obviously geared towards.

I've recently being doing some work with ND2D which is a similar framework so I decided to write a few tests to compare performance. They all run an animation on 2000 sprites. You will need Flash Player 11 installed to run these.

On my computer I get the above framerates which suprised me a bit. Starlight seems to be quite a bit slower. I tried everything to speed it up including disabling error checking, anti aliasing and image smoothing. Here is the source.

The interesting thing about Starling is that it tries to mimic the native display list as much as possible. It contains its own version of native classes such as Sprite, DisplayObject, Stage, TextField, and even Event and EventDispatcher, all with the same name. This makes working with it slightly difficult as you always have to be sure that you're importing the right class and it gets even harder when dealing with the custom event bubbling infrastructure that doesn't support native events.

Looking at this, a reasonable question to ask is why doesn't Adobe work into building this right into the runtime where all native display objects are running on the GPU instead of making people use an external framework that uses the same API anyway. It could be the case that Adobe is already working on this. They see all these 2D frameworks based off Stage3D popping up with varying API's and decide that they'll release one that behaves very much like the display list - one that developers will get behind so that when the functionality arrives in the native run time the effort required for developers to transition will be minimal. Adobe has already made advances to leveraging the GPU in Flash Player 10 with wmode=gpu that composits on the GPU and rendermode=gpu for mobile that renders vectors on the GPU. Doing this automatically across the whole display list though is very difficult.

I think a less interesting but much more likely reason for the similar architecture is simply that that is how Sparrow is architected, which Starling is a port of. Sparrow was inspired by Flash so when it gets ported back to Flash the similarities become obvious. In Sparrow however class names are prepended with SP, why is it different here?  


Sprite Sheet Animation Tagger

I've been playing around with spritesheets quite a lot recently. During my experiments I used a lot of prexisting spritesheets such as those from the Metal Slug games . Creating animations out of those spritesheets was tedious though as I had to manually mark every sprite's coordinates because each sprite wasn't the same size. And even if all the sprites were the same size, creating animations out of them still took a bit of work. To help with this I created a simple AIR app that allows you to easily create and edit animations from a given spritesheet. 

Once the animations have been marked up you can export the data and import it into your own application to be used. These lets you easily access animations by name.


  • draggable frame rectangles
  • keyboard shortcuts for changing frame dimensions
  • frame duplication with offset to easily create animations out of equally sized sprites
  • edit multiple frames at once
  • handles multiple animations
  • naming of animations
  • exporting of animations
  • animation origin point for sprites that grow in a certain direction but are packed together
  • preview window with playback controls and  onion skinning
  • set animation framerate controls
  • set animation looping controls (auto reverse or normal)
  • zoomable source window
  • auto updating application so you will recieve updates as soon as I make them

Please install the latest Flash Player

To start with just drag select around a sprite. Then you can copy it by pressing space or drag another. Select multiple frames in the list and use the arrow keys to shift position and size.


  • 1-9 - select frame (shift adds)
  • Space - insert duplicate frame
  • Arrow keys - shift position (shift increases distance)
  • Arrow keys with control/command - change size (shift increases amount)



How to use Flash Player 11 and Stage 3D in Flash Builder

Stage 3D is only available in the Flash Player 11 beta at the moment and there a few steps to get it working correctly. A few of the last ones tripped me up so I thought I'd list them here for anyone else who is having trouble.

  1. Download and install Flash Player 11 beta
  2. Download at least Flex 4.5 and unpack anwhere
  3. Install Flash Player 11 playerglobal.swc:
    • Download playerglobal.swc (bottom of page)
    • Rename downloaded swc to 'playerglobal.swc'
    • Place playerglobal.swc into Flex SDK folder under /frameworks/libs/player/11.0
  4. Install Flex SDK in Preferences -> Flash Builder -> Installed Flex SDKS -> navigate to adobe Flex SDK
  5. Create a web based Actionscript or Flex Project in Flash Builder with the above Flex SDK 
  6. Go into the project properties -> compiler settings
    • Set User specific version to 11.0.0
    • Add compiler argument -swf-version=13
    • Make sure generate HTML wrapper file is checked
  7. Open html-template/index.template.html and add params.wmode = "direct"; at line 49
  8. Make sure your video card drivers are up to date and are newer than 2009
  9. Lastly right click on any flash content and go to settings and make sure 'Enable hardware acceleration' is ticked.

All those steps except the last 3 are required to compile with Flash Player 11. Setting the wmode to direct, having up to date video card drivers and making sure hardware acceleration is enabled are required for Stage 3D to work. 

Hope this helps.


Native Extensions in Adobe AIR 3

Adobe have just posted a new release candidate for AIR 3, which includes support for the new Native Extensions feature.

This will allow people to create extensions that use a combination of native code and Actionscript that lets applications written in AIR leverage the native system capabilities of wherever it is deployed, in effect extending the AIR runtime.

This capability will allow AIR to:

  • Achieve deeper integration with target devices
  • Incorporate legacy native code in applications
  • Take andvantage of multiple cpu cores
  • Offload calculations to the GPU
  • Achieve maximum performance for critical code

Adobe have also posted a detailed article detailing the specifics which is a really good read.

I think this really helps Adobe's aim for Flash to be the go to platform for creating applications across different systems and devices. It was already pretty good but this takes it to a whole new level. It can now compete with the likes of HaXe which has really been gaining ground recently. And with the inclusion of Stage3D (which is also in AIR 3.0) Flash is also becoming a truly powerful platform for games. All in all it gives me high hopes for the future of Flash.

I'm really excited to start playing with this, and to see what extensions the community is going to build. 


Site Redesign

I decided to do a complete site redesign. Not sure if I'm totally happy yet, but it's better than the old one.


Flash Builder custom metadata for Parsley and FlexXB

Flash Builder 4.5 added code completion for metadata tags. Adding support for custom metadata tags however requires building a swc containing a metadata.xml file outlined in hard to find documentation. They could have just added a preferences panel but this is a good way for developers to include custom metadata info right in their library swcs.

Two libraries I use quite often and leverage metadata tags heavily are Parsley and FlexXB. Neither of them have included this metadata.xml file in their latest releases so I have created 2 extra swcs containing just the metadata info using xml files found here and here respectively. I'm sharing them here in case anyone else wants to use them.

Note that they just contain the metadata info not the rest of the library. I could have bundled it in, but if the library recieves an update that still doesn't include the metadata file it will need to be integrated again.


Braavio and Cricket Australia

Work continues on the aforementioned Wunderkind BVR, which in the meantime has been rebranded as Braavio. More information can be found on the new website

Cricket Australia is the next big client to utilise Braavio in their efforts to find new Participation Growth Leaders for the sport. Along with their campaign launch we are rolling out our new Admin site which allows admins to manage submitted applications and get an overview of their campaign. This will be enhanced over the next few months to allow clients to fully set up, customise and manage every part of their campaigns and related roles themselves including: creating interactive forms for applicants to fill out, customise branding with colours and logos, creating video questions, and customising all text content and call to actions.

In the meantime we have also completed the Shortlist site, which is the next stop for favoured applications in the recruitment process after they have been approved in Admin. It allows managers, HR, recruiters and otherwise interested parties to view, vote, comment and otherwise decide on suitable applicants for the required roles.

If you are looking to be Cricket Australia's next Participation Growth Leader head on over to their Braavio powered recruitment campaign at Applications open on the 30th of May.

Those interested in utilising Braavio for their own recruitment needs, please note that we are still in private beta at this time, but please register your interest at