Tag Archives: AS3

ActionScript 3.0

How Wonderfl

I’ve been playing around a little with the online Flash building tool, Wonderfl. If you haven’t seen it already, I urge you to create an account and have a go. You can browse the weird things that people have created, fork other users’ code, or write you own from scratch and see the results compiled online in realtime. It’s a great way to learn graphics coding in AS3 I reckon.


 

Wonderfl


 

You are here…

I made this globe that ‘should’ look up your IP address and point to where you are on Earth – the nearest city at least. Am I close? 😉

Audio visualiser

I finally got around to making a simple audio visualiser, something I’ve been meaning to do for a while. If you have a microphone, simply click ‘allow’ below and put some music on. You may need to play with your micrphone gain though, just right-clic, go to ‘settings’ then click the micrphone tab and drag the ‘record volume’ slider up/down.

Migrate to AS3 now!

Much as it pains me, I still develop in AS2 when it’s absolutely necessary – usually because a legacy application needs maintenance. But I was never a big fan of AS2; its quirks, the weird workarounds and its ‘almost but not quite’ OOP nature always annoyed me.

For those still clinging to AS2 like a comfort blanket, daunted by new-fangled syntax and the loss of some of AS2’s most trusted old arcane method, fear not! Help is at hand in the form of this handy AS2 to AS3 migration guide.

In many ways, AS3 is actually simpler than AS2, because it retains less of the AS1 legacy that plagues AS2’s structure and behaviour. We should all be developing in AS3 now and drop AS2 like a bad habit. That’s not because I’m some kind of code fascist; I find that the development and maintenance of projects built in AS3 just seem to go smoother – but the enforced use of the proprietary, often clumsy frameworks I encounter in some of my contract placements is another story altogether.

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 🙂

Webcam controlled motion

I started playing around a little more with my Webcam and extended my previous 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, Pants3D 🙂

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:

ActionScript performance tips

Here are a few simple tricks that may help the performance of your code/graphics intensive Flash movies. This is not an exhaustive list, by any means, rather some of the more effective performance tweaks to try out on your projects. There are the usual sensible coding tricks, like using local variables for oft-used references within functions, or planning your code loops carefully and breaking out of loops whenever feasible – but you should be doing these already. I’ll be adding to this post as and when I feel necessary, but will generally avoid the more granular tricks, such as bytecode optimisation. Some of those methods are too complex to explain in simple terms here and generally have a low effort-to-benefit ratio anyway:

Use scrollRect in conjunction with cacheAsBitmap. The cacheAsBitmap parameter of a movieclip can improve performance dramatically, but will cause problems if the render area of the movieclip gets too large (e.g. larger than 2880 in width or height), regardless of whether it is cropped by the viewable area of the Flash Player. The solution is to use scrollRect to constrain the rendering area to desired limits, in this example, the stage width/height:

Create bitmap snapshots of complex movieclips. Where you may have a movieclip full of layered graphical effects that isn’t animated, you can save a lot of rendering time by creating a snapshot of the movie. Similar to the cacheAsBitmap parameter, but will improve performance further if your movieclip comprises many lines or alphas. The following function shows a quick and dirty way of duplicating a movieclip as a snapshot of the original:

Use the opaque window mode trick – sparingly! Setting the wmode=opaque HTML parameter of your Flash object can improve rendering performance, but at a potential cost. Not only does it make the rendering order of movieclips and frames more ‘lazy’, but will effect keyboard interaction adversely in some browsers (especially FireFox). Use with caution.

I’ll be updating and tracking back to this post occasionally, so stay tuned…