Basic random functions

Here are some really basic (but useful) functions that returns random stuff…

The really basic one, is built in the Flash api and it returns a Number between 0 and 1:

var n:Number = Math.random();

A number in  a range

Sometime is more useful to have a random number in a different range, let’s say between 15 and 45, instead of 0 and 1.

public static function randNumber(max:Number = 1, min:Number = 0):Number {
    return Math.random() * (max - min) + min;
}

Random int

and what if we don’t need decimals? Round’em!

public static function randInt(max:Number = 1, min:Number = 0):int {
    return Math.round(Math.random() * (max - min) + min);
}

Random boolean

True or false? Flip a coin.

public static function bool():Boolean {
    return (Math.round(Math.random()) == 0);
}

Random sign

-1 or 1; Useful when you have to random select random rotation verse, for example, -1*45 or 1*45, rotates counterclockwise or clockwise.

public static function sign():Number {
    return (Math.round(Math.random()) == 0):-1:1;
}

Random color

Really useful when drawing debug shapes on screen..

public static function color():uint {
    return Math.random() * 0xFFFFFF;
}

Random point

Inside an area. I like to use the flash.geom.Rectangle struct to describe an area, more than using 4 parameters (Flash api are quite inconsistent about this choice)

public static function point(area:Rectangle):Point {
    return new Point(randInt(area.x, area.x + area.width), randInt(area.y, area.y + area.height));
}

Quickreference: display elements in a circle

How to display elements in a circle? A small function to do that is:


GeSHi Error: GeSHi could not find the language actionscript3 (using path /nfs/c03/h01/mnt/85630/domains/nightdrops.com/html/wp-content/plugins/snipplr/geshi/geshi/) (code 2)

Parameters are:

  • items: the items to be displayed a a circle
  • center: the center of the circle
  • distance: the distance from the center
  • initialAngle: the angle of the first item. Zero means that the item wil be aligned orizontally with the center, on his right.

Here’s an example:

Graph examples

I’ve always been fascinated by networks, and everything that can be modeled as a graph. In some spare time one I’ve tried to model a simple graph structure in actionscript 3 that can be implemented to render some nice example. I want to extend it by adding some graph algorhythm like Breadth-first search, Depth-first seach, Dijkstra and others, just to keep mind busy in the summer, since in 3 days from now i’ll be officially unemployed.

So the first example consists in a bunch of nodes connected.. uhhu! Nodes can be activated, and each time this happens to a node, there is a chance that he activates his neighbours.

If you want to see the code, there are two steps: I’ve stored the code that models the network (the Graph class and the INode interface) in a simple framework of mine that you can checkout from here; then you can download the project as a zip file from this link)

As a references, you should see Levitated examples on networks, starting by this one or  by this one.

Tweening global volume in flash

Just a quick reminder on how to shut up the master volume on a flash project. I like a smooth tween to the silence, so I’m using the TweenLite libraries.


GeSHi Error: GeSHi could not find the language actionscript3 (using path /nfs/c03/h01/mnt/85630/domains/nightdrops.com/html/wp-content/plugins/snipplr/geshi/geshi/) (code 2)

The trick here is to tween the volume property of a throw-away SoundTransform object, and on each step of the Tween apply that object as the SoundMixer.soundTransform Object, with an helper function. Note that I’m not going to write the function inside the TweenLite’s partameter list, as it is gross and dirty.

Tweening the volume back to 1 is so easy that I’m not writing it, to not offend anyone.

Tools you can’t live whitout: Lita

Another post on tools I really appreciate while working; LitaLita is another SQLite  administrator tool, made by David Deraedt. It really stands among other admin tools.

Read the rest on Lita homage.