Flash 10 Matrix3D demo

I quickly cobbled together this little demo using the new native 3D transforms in Flash 10. Alongside the regular transform.matrix property, DisplayObjects now have a transform.matrix3D property, which controls its appearance in 3-D space. It’s pretty easy to play with in Flash CS4, without any coding knowledge - I can’t wait to see a version of GTA built using this :)

Quick as a Flash 10

Flash Player 10 is here...Flash Player 10 is finally here! But does it live up to the hype? Previous major releases of Flash Player have each brought with them significant improvements in performance or added functionality. This time around, the guys at Adobe have been tinkering with a few exciting (and a few somewhat drier) enhancements, including: native 3-D transform APIs, new custom ‘Pixel Bender’ filters, dynamic sound generation, hardware accelerated graphics and new video capabilities.

Personally, because I’m always looking for new things that enable us to create innovative and engaging user experiences, I’m a little less excited about new features such as support for right-to-left languages or new audio codecs. But at least there are people out there filling in the gaps, pushing Flash beyond its perceived limits and developing things we can actually use to create edifying experiences, such as papervision, box2d, etc.

Any new features though, even if they aren’t quite as ‘cool’ as the previous additions of webcam or socket server access, are ultimately a good thing. Let’s just hope everyone keeps pushing in the right direction and uses Flash to beautify the web, not just make it more clunky - Shockwave people take note.

Webcam controlled 3D Earth

Playing around some more with my webcam, I cooked up this 3D Earth with Papervision and made it controllable through a webcam (if you have one). The motion detection is rather flaky, since it tracks the centre-point of a whole area of motion - if you move a lot it will just get confused :)

When fonts attack

You know the drill… you open an FLA you’ve been given and it complains it’s missing several never-before-heard-of fonts that you can’t find anywhere. Wouldn’t life be easy if everything could just be Arial, for example. Try this little JSFL command I wrote (packaged as a ZIP, since it needs the dialog box XML file included) to change all textfields in an FLA to a given font name.

All Your Laptops Are Belong To Us

Airport securityAnother reason not to visit the US?

The Department of Homeland Security have now given themselves the right to nick your laptop when you go to the states.

Someone tell them about the Bill of Rights? I pity the state of the states these days.

When design goes wrong

You know the situation - a designer has given you an FLA file to build from and either the text is too small to be legible for us mere mortals, or is going to be too large when translated into Russian. Since designers rarely think of these things, I find myself either coding in text size dynamically, or using these couple of of JSFL scripts I wrote a lot. One of them increases the point size of all text in an FLA, the other reduces it.

Webcam controlled motion

I started playing around a little more with my webcam and extended my previous webcam motion detection example - this time to control the camera of a virtual 3-D space from motion detected in the user’s webcam. It detects motion area and general direction, albeit with dubious accuracy, but you get the idea.

Due to popular demand, I’ve posted the source code for you lot to play with. It contains the FlashDevelop project file (it’s compiled with the flex 3 sdk) and my cut-down 3-D engine, Pant3D :)

Trekking in the Lakes

Lake DistrictI recently went up to the Lake District with some friends and did a fair amount of trekking. Geez was it windy! Very pretty though, if a little overpriced.

But I guess that’s bank holiday weekend everywhere :(

Webcam Flames

I played around some more with my webcam today and knocked this out. I also found my webcam already has the IR filter missing (cheap webcam), so it can already see infrared… which will come in handy:

Wii Paint

After getting my Wii remote hooked up with the WiiFlash Server, I knocked up this quick Flash demo which draws the blobs of infrared light the Wii remote detects (it can track up to 4 blobs at once), just like the Wii console's sensitivity setting dialog does. I just gave each blob a different colour and clear the graphics on pressing the 'A' button.

Here's the code to get it working - requires WiiFlash Server:

import org.wiiflash.Wiimote;
import org.wiiflash.IR;
import org.wiiflash.events.ButtonEvent;
import org.wiiflash.events.WiimoteEvent;
import flash.events.*;

var myWiimote:Wiimote = new Wiimote();
myWiimote.connect();myWiimote.addEventListener(WiimoteEvent.UPDATE, onUpdated);
myWiimote.addEventListener(ButtonEvent.A_PRESS, onAPressed);

function onUpdated (pEvt:WiimoteEvent):void {
var ir:IR = pEvt.target.ir;
var irWidth:Number = 400;
var irHeight:Number = 400;
var irSize:Number = 4;
if (ir.p1) drawCircle(ir.x1*irWidth, ir.y1*irHeight, ir.size1*irSize, 0xff0000);
if (ir.p2) drawCircle(ir.x2*irWidth, ir.y2*irHeight, ir.size2*irSize, 0x00ff00);
if (ir.p3) drawCircle(ir.x3*irWidth, ir.y3*irHeight, ir.size3*irSize, 0x0000ff);
if (ir.p4) drawCircle(ir.x4*irWidth, ir.y4*irHeight, ir.size4*irSize, 0xffff00);
}

function onAPressed (pEvt:ButtonEvent):void {
graphics.clear();
pEvt.target.rumbleTimeout = 50;
}

function drawCircle (x:Number, y:Number, size:Number, colour:Number=0xffffff):void {
graphics.beginFill(colour, .2);
graphics.drawCircle(x,y,size);
}