Posts Tagged: source code


10
Jan 12

Object pooling utility updated

Having just got back from an awesome break in Thailand and Taiwan, I just updated my object pooling utility. Thanks to Ostra Ceruzka for raising an issue with its strict mode functionality with me – all fixed now! Serves me right for not writing enough tests, huh?


29
Aug 11

Loan Shark – fast object pooling

Loan Shark AS3 object pooling utilityA couple of years ago, I created an AS3 object pooling utility for a games project I was building. Since then, I've used it quite a few times, in order to speed up apps and improve resource management, easing the load on the garbage collector by reusing objects instead of recreating them.

While object pooling isn't a magic bullet to speed up every use case, it works especially well with custom classes that are heavy to continually contruct and destroy. A good example is my History of the World project, which uses an object pool for item renderers, instead of creating and destroying them as you navigate around - press ALT+CTRL to bring up the resource debugger, which shows a little information on its usage.

I recently updated the utility, improving its performance, adding features and putting loads of unit tests around it. It's now hosted it over at GoogleCode. Using it is a simple as:

import org.kissmyas.utils.loanshark.LoanShark;

var pool:LoanShark = new LoanShark(SomeClass);
var someInstance:SomeClass = pool.borrowObject();
someInstance.doStuff();

// Instead of nullifying an object, check it back into the pool
pool.returnObject(someInstance);


10
Jul 11

SWFIdle – simple flash idling utility

I created this simple utility, called SWFIdle, to enable the Flash Player to lower its CPU usage while the user is not interacting with it. Since it's possible to have multiple Flash instances embedded in one page (for example, a game and a couple of banners), I recommend that everyone uses this in their projects, so that SWFs needn't fight for CPU and give Flash a bad name.


7
Jul 10

How to embed an entire asset SWF and get symbols from it

The problem:

You want to embed an entire SWF, full of assets, into a class and retrieve individual symbols from it - but you don't want to have to embed each asset individually.

The solution:

SWFAsset - a couple of lines of code and you're away.


22
Jun 10

How to correct 3-D projection on stage resize

The problem:
You're using Flash 10's native 3-D API and notice the projection goes a little skewiff when resizing the window.

The solution:
You need to reset the stage's projection centre on stage resize, like so...

var centre:Point = new Point(stage.stageWidth/2, stage.stageHeight/2);
root.transform.perspectiveProjection.projectionCenter = centre;


4
Jun 10

Migrating to Flex SDK 4

In moving to compiling projects with the new Flex SDK 4, in noticed a couple of gotchas to do with the EMBED metatag that I thought I'd better share:

Runtime shared libraries
If you're like me and want to embed assets in your project with the EMBED Flex metatag, so you can manage and update things easily, there's a an extra compiler parameter you must add, in order for your project to compile properly:

--static-link-runtime-shared-libraries=true

This is already added as a new default parameter to the new version of FlashDevelop. But if you're planning to build projects from outside of FlashDevelop, you must add this to your compiler string. Otherwise, the compiler will think you have uninitialised constants and warn you so.

Embedding fonts
Using the EMBED metatag (or runtime loading) for fonts is the sensible way forward. The amount of projects I've seen where you need to build from an FLA file full of fonts you need to install that you can't find is crazy. With Flex SDK 4, you'll need to add an extra attribute to your embed tag for fonts, called 'embedAsCFF':

[Embed(source='myfont.ttf', fontName='MY_FONT', fontWeight='regular', unicodeRange='U+0020-U+0040,U+0041-U+005A', mimeType='application/x-font', embedAsCFF='false')]
public static const MY_FONT :Class;


2
Jun 10

FlashSize – simple browser resizing

How to allow SWFs to display at 100% width/height in your browser - but enforce a minimum width and height, in case of a smaller browser window size than you've designed for.

Until recently, I'd used other Flash/browser resize managers when I needed to ensure a SWF is embedded in HTML at 100% width and height, but with support for a minimum width and height setting. But I recently needed a solution the didn't depend on external JavaScript, due to not having control of the page the SWF is embedded in.

With my simple FlashSize script, all you need do is call:

import com.spikything.utils.FlashSize;
FlashSize.setup(minWidth, minHeight);


3
Apr 10

MouseWheelTrap now at GoogleCode

I've put the latest version of my Flash/browser scrolling fixer over on GoogleCode and will be updating it there, as necessary.