actionscripter.co.uk Web and Multimedia Development
Flash, Flex, AIR, PaperVision
ActionScript 3.0 Specialist.

    

blog  portfolio  about
 


Flash Snapshot Application - an AIR/Flickr/Moo mashup

May 27th, 2008

There’s lots of fun to be had with Moo mini-cards, and I’ve been getting good feedback on the batch of fractal cards I made recently, which were created by taking snapshots of one of my flash experiments. The magic behind this was so simple I may as well share it with you. All you need to create your own set is the Flex/AIR app I created, which you can download here, and a Flickr account. This is how it works:

You give the app the path to your swf, and hit enter. It then runs a function to start a timed loop, as follows:


private var _saveDir:File;
private var _timer:Timer;
private var _counter:int;
private function startSnapshot(url:String, time:Number = 5):void {
// loadedSwf is the name of the mx:Image that will contain the swf
loadedSwf.source = url;
// create a directory to store our snapshots
var dirName:String = "snapshots";
_saveDir = File.desktopDirectory.resolvePath(dirName);
var x:Number = 1;
while (_saveDir.exists) {
_saveDir = File.desktopDirectory.resolvePath(dirName + String(x++));
}
_saveDir.createDirectory();
// start loop
_counter = 1;
_timer = new Timer(time * 1000);
_timer.addEventListener(TimerEvent.TIMER, snapLoop);
_timer.start();
}

Then, while the swf plays, the timer loop fires this function every few seconds to take a snapshot:


private function snapLoop(e:TimerEvent):void {
// create a new BitmapData object based on the size of the loaded swf
var BMPData:BitmapData = new BitmapData(loadedSwf.width, loadedSwf.height, true, 0xFFFFFF);
// take a snapshot of the swf, and store it in the BitmapData object
BMPData.draw(loadedSwf);
// encode it as a jpg
var jpgEncoder:JPEGEncoder = new JPEGEncoder(80);
var jpgBytes:ByteArray = jpgEncoder.encode(BMPData);
// save it
var ourFile:File = _saveDir.resolvePath("snap" + _counter++ + ".jpg");
var fileStream:FileStream = new FileStream();
fileStream.open(ourFile, FileMode.WRITE);
fileStream.writeBytes(jpgBytes, 0, jpgBytes.length);
fileStream.close();
}

Note that the BitmapData snap may give unexpected results with transparent swfs, so it is best used with swfs that have a solid background.

Once you have a folder full of snapshots, upload these to Flickr. For this example I pointed the app at a local version of my favourite fractal experiment swf, to produce this set of images.

To turn these into mini-cards, the final step is to use Moo’s Flickr import option. Point it at the Flickr set you have created, pay your money, and in 10 days or so a pack of groovy cards pop through the postbox. Simple.



Monster Burn

April 24th, 2008

A message to clients with big ideas (and big money) - this is what we can do with Flash these days:

Monster Burnout

(c/o the mighty mrdoob)



Adobe AIR: an Apology

April 18th, 2008

The portfolio has just received a long overdue update, with some recent projects added to it, one of which being (slightly prematurely) the CD-Rom I am currently finishing off for Natural England, which I put together using Flex3 and AIR. I mention this because in the process of doing this project I have come to realise that I now owe Adobe a small apology.

A year ago O’Reilly books generously sent me a review copy of their Apollo For Adobe Flex Developers Pocket Guide. Apollo, or AIR as it has since been re-christened, was only at alpha stage when the book was released, and was full of bugs. I had spent a lot of time hacking away at both that and the documentation-less Flash 9 Alpha that had been released not long before. With AIR, even with the help from some of the development team, I couldn’t get even the most basic of applications to run. Because of my frustration (and because I thought I was oh-so big and clever) I wrote a deeply sarcastic review of the book for Blogcritics.

So this is my apology. I made my peace with Flash 9 and ActionScript 3.0 some time ago, and now, since AIR finally got it’s first 1.0 official release last month, I have had a complete u-turn in my opinion of that too. AIR is an utter delight to work with. And with Flex reaching version 3 to coincide with the release, they go together like Peters And Lee. Harmonious.



Adventures In PaperVision 3D

March 16th, 2008

I’m sure this isn’t the first PaperVision game, but I might make claim on it being the simplest. But then I only really had a day free to do this, which doesn’t allow the time for any sexy 3D modelling or texturing. Otherwise, you’d be looking at day-glo Tron Light Cycles racing around the grid below, rather than blue blobs. The keys are A/D or Left/Right arrows, and the idea is to collect the green things. The rest you can work out for yourself. Fullscreen version here.

What you’re looking at is PaperVision 3D. Not the silly snake game, but the Flash 3D engine rendering all those polygons. PV3D is probably the greatest Flash Open Source success story to date. At my local nerd club, a recurring topic of conversation is the “Open Source question” - i.e. should I open source my code or not, and what exactly do I gain by giving away my work for nothing? The creators of PaperVision, Carlos Ulloa, John Grden and the rest of the crew, answer this question. Rather than being the authors of a great 3D engine no-one knows about, by setting their code free they have become the leading experts in a 3D engine that EVERYONE uses.

At November’s FOTB conference PV3D was on every developer’s lips, within six months even clients are asking for PaperVision. By giving away their work, the creators of PV3D have made themselves coding mega-stars. This is how Open Sourcing works, the trade is in kudos, not commodities. The Open Source movement is the economic paradigm shift of the 20th Century, it happened in software five years ago, last year it made it’s mark on music, this year it will be publishing. The year after that … who knows. As the Chili Peppers advised, give it away, give it away, give it away now



Cracked, True Isometric 3D in ActionScript 3

February 23rd, 2008

It’s been six months at least since I’ve had the spare time for any ‘leisure’ coding but I finally found a few hours to get back into my Flash isometric 3D engine this week. And I’m really chuffed with what I’ve achieved.

You can move the ball with keys QAOP (once you’ve clicked on the movie) but the really interesting bit is the sliders. Thanks to AS3’s speed, I can now redraw the isometric space at runtime, so it is a “true” 3D engine.

I reckon MC Escher would have appreciated it.



 
actionscripter.co.uk.com actionscripter.co.uk.com actionscripter.co.uk.com