StarRequests, Simple-Box2D & Flickr – a example mashup.

Mark (of has been working away on his pet project “StarRequests” for a little while now, so I thought I’d give it a whirl and see what he’s come up with – and of course, what I could come up with off the back of it.  This is the result; a Flickr image loader, with a smidge of Box2D mixed in to make it all seem more interesting.

[kml_flashembed movie=”” height=”560″ width=”500″ /]

Continue Reading…

Link: Value Object Class generator for ActionScript 3

A bit specialist perhaps, and the need for such a tool might become redundant if the Flash Builder hype is to be believed, but I found this quite useful for speeding up the process of writing a value-object class in AS3.

What is a value object anyway?

For the uninitiated, a value object class is essentially a class with very little or no application logic inside it.

Instead of being a file that actually does something, it’s more of a class for just storing data.  What makes it special is that AS3 classes are not all dynamic, so you have to plan what data you need to store and how you’ll store it; and you can achieve a vast majority of that with value object classes.

If you’re coming from an AS2 or Flash IDE background you might think it’s a bit unnecessary or even frustrating, but when you plug value object classes into a development environment like Flex Builder you see where it comes in useful, when it can actually gives you useful autocomplete suggestions, and warns you if you’re passing the wrong type of data into your classes.

Simplifying Box2DAS3…

One of the downsides to the Box2DAS3 project – and probably one of the major hurdles to most Flash developers – is the fact that it’s inherited a lot of the syntax from the C++ project that it’s derived from.  Maybe it’s just because we’re used to it, but Actionscript is pretty easy to understand, and its methods of working pretty tolerant of inefficient coding.

C++ – or whatever Box2D is written in – is not, and it’s a little painful to setup and easy to break.  For my sanity as much as anyone else’s I’m working on a set of classes in AS3 that wrap around the Box2DAS3 classes, and provide you with a more familiar syntax for working with Box2D – objects, methods and utilities that makes it quicker to throw things together and don’t require you to rethink the way you work.

Well, that’s the eventual aim anyway.

Here’s the result of the first round of development – creating a Box2D world and adding objects, in about 6 lines of code.

[sourcecode language=”javascript”]
var options:Box2DWorldOptions = new Box2DWorldOptions( 500, 280, 30, 9.8 );
options.setWorldEdges( true, true, true, true );
var world:Box2DWorld = Box2DUtils.createBoxedWorld( options );
world.debugDraw = true;
world.animateOnEnterFrame = true;
addChild( world );
for ( var i:int = 0; i < 30; i++ )
world.createCircle( 500 * Math.random(), 280 * Math.random(), 50 * Math.random());

And here's the result:

[kml_flashembed movie="" height="280" width="500" /]

Continue Reading…

The results of my annual “code something different this Christmas” idea.

It’s becoming something of a tradition now I guess, but once I’ve allocated that extra Christmas holiday time appropriately, I find I have that little bit of extra time to devote to trying something new.  This year, I thought I’d try rewriting (again) one of my old university experiments.

Here’s the result:

[kml_flashembed movie=”” height=”280″ width=”500″ /]

It’s pretty.  I won’t even try to explain the idea behind it, but it’s basically an attempt at simple life simulation, with some AI governing the actions.  This time around I’ve built it with the aid of Box2D, so all the movement, impacts and interaction is achieved by punching some figures into the Box2D world, which makes the thing a helluva lot easier.

The big plus of “trying something new”? I now have a basic understanding of trigonometry!  I didn’t even have to Google anything!

Cool ActionScript projects to try out, if you haven’t already…

Hopefully I’ll get a chance to cover each of these in more detail shortly, but there’s a whole bunch of cool new Actionscript 3 projects that are floating around at the moment – here are some of my favourites that I’m trying to find enough time to explore in detail.  Each stands out from the crowd for being pretty awesome, and I’m hoping to find some killer way to combine them into my projects.

For Animations & Tweening:

GreenSock Tweening Platform [link]
The name actually encompasses five different varieties of animation libraries, and is awesome at scripting individual and timeline animations.  Not just that, but it comes packed with a load of animation options that you didn’t know you wanted, until you see them.  Like realistic motion blur.  That one’s cool.  Especially once you’ve tried making it yourself in the past…

Clipboard data 04-11-09, 23-03-42

Game development

Collision Detection Kit [link]
Much like the GreenSock stuff, just how good this is really has to be seen to be believed.  The basic Actionscript hit-test tools were never really that great.  Sure they worked, but if you wanted anything more than a Boolean response, it was no good at all.  The Collision Detection Kit gives you enough information to do proper physics – working out things like what, where and how hard things hit.  It works with any display object – vectors, bitmaps, even video.

Clipboard data 04-11-09, 23-05-18

Box2D [link]
Box2D.  Runs blindingly fast, precisely calculates physics and interactions.  It’s a true physics engine, rather than others (like Collision Detection Kit) which are just imitating physics.  A little hard to get into because it’s all written differently to every other Actionscript example I’ve ever seen (“You must unlearn what you have learnt”) but once you get over that hurdle, it’s just so… powerful.

Clipboard data 04-11-09, 23-07-22

Documentation for Box2D isn’t very new user friendly, but Emanuele Feronato has a fantastic series of blog posts on Box2D which will prove invaluable.

Link: Cool Actionscript 3 ‘Genie’ effect

This is an awesome link that Mark sent around the other day – a cool Mac-esque ‘Genie’ effect.


That effect is all very cool, but even more surprising is that it seems to be an Actionscripted effect, rather than a Pixel Bender effect.  You can find the blog post from the guy that created this here, and even better can find a live online example here.

Rotating BitmapData with Actionscript 3

Here’s a little snippet – rotating BitmapData (through 90 degrees) with Actionscript 3.

[sourcecode language=”javascript”]
var matrix:Matrix = new Matrix();
matrix.translate(-bmd.width / 2, -bmd.height / 2);
matrix.rotate(90 * (Math.PI / 180));
matrix.translate(bmd.height / 2, bmd.width / 2);
var matriximage:BitmapData = new BitmapData(bmd.height, bmd.width, false, 0x00000000);
matriximage.draw(bmd, matrix);

The code above can rotate an images BitmapData, using a Matrix to transform the image when you draw the data.  It’s only really designed to rotate the image in 90 degree increments though – so be aware of that.

How it actually works is to create a new Matrix object, offset the source BitmapData’s width and height (so the rotation goes from the center of the bitmap), rotate the BitmapData, move the BitmapData again (to undo the previous offset), create a new BitmapData object to draw the rotated BitmapData into, and finally draw the source BitmapData with our newly created Matrix.